A computer-implemented system (100; 200) comprising: a routing service configured to: monitor or predict a performance of a plurality of endpoints; and assign a first plurality of the plurality of endpoints to a first routing pipeline and a second plurality of the plurality of endpoints to a second routing pipeline based on the monitored or predicted performance of the plurality of endpoints, wherein the second plurality of endpoints are associated with lower performance than the first plurality of endpoints; and wherein the routing service comprises: the first routing pipeline (112; 212) configured to receive messages and to route a first plurality of the messages to the first plurality of endpoints, wherein the first routing pipeline (112; 212) is configured to move a message checkpoint forward after each message of the first plurality of the messages has been processed, wherein the processing of each message of the first plurality of messages is by each of the first plurality of endpoints for which it is intended; and the second routing pipeline (114; 214) configured to receive the messages and to route a second plurality of the messages to the second plurality of endpoints, wherein the second routing pipeline (114; 214) is configured to move a message checkpoint forward after each message of the second plurality of the messages has been processed, wherein the processing of each message of the second plurality of messages is by each of the second plurality of endpoints for which it is intended. a routing service configured to: monitor or predict a performance of a plurality of endpoints; and assign a first plurality of the plurality of endpoints to a first routing pipeline and a second plurality of the plurality of endpoints to a second routing pipeline based on the monitored or predicted performance of the plurality of endpoints, wherein the second plurality of endpoints are associated with lower performance than the first plurality of endpoints; and wherein monitor or predict a performance of a plurality of endpoints; and assign a first plurality of the plurality of endpoints to a first routing pipeline and a second plurality of the plurality of endpoints to a second routing pipeline based on the monitored or predicted performance of the plurality of endpoints, wherein the second plurality of endpoints are associated with lower performance than the first plurality of endpoints; and wherein the routing service comprises: the first routing pipeline (112; 212) configured to receive messages and to route a first plurality of the messages to the first plurality of endpoints, wherein the first routing pipeline (112; 212) is configured to move a message checkpoint forward after each message of the first plurality of the messages has been processed, wherein the processing of each message of the first plurality of messages is by each of the first plurality of endpoints for which it is intended; and the second routing pipeline (114; 214) configured to receive the messages and to route a second plurality of the messages to the second plurality of endpoints, wherein the second routing pipeline (114; 214) is configured to move a message checkpoint forward after each message of the second plurality of the messages has been processed, wherein the processing of each message of the second plurality of messages is by each of the second plurality of endpoints for which it is intended. the first routing pipeline (112; 212) configured to receive messages and to route a first plurality of the messages to the first plurality of endpoints, wherein the first routing pipeline (112; 212) is configured to move a message checkpoint forward after each message of the first plurality of the messages has been processed, wherein the processing of each message of the first plurality of messages is by each of the first plurality of endpoints for which it is intended; and the second routing pipeline (114; 214) configured to receive the messages and to route a second plurality of the messages to the second plurality of endpoints, wherein the second routing pipeline (114; 214) is configured to move a message checkpoint forward after each message of the second plurality of the messages has been processed, wherein the processing of each message of the second plurality of messages is by each of the second plurality of endpoints for which it is intended.