Observation/Comment only: So the plugin will process the one retained message exit and have to be restarted again for the purpose of preserving the message order within the data stream it came from, correct?.  Seems like a lot of overhead, are we guaranteeing the message order from a single data source (by it's time? by its position in the log?).  This seems like a case impacting output plugins only, when the destination cannot be reached. If the output is going to a data warehouse like Cassandra then the order doesn't matter, if it is going to some stream processor then in-order (within each source) can be beneficial.