Relating question (I think above process is correct, if it timeouts, it's not supposed to be processed) on how to handle the timeouts or to prevent them actually from happening.
I have a service, which splits the action to two other services and aggregates them later. One of these services is kinda slow, takes ~200 ms per message per processing core. I have situations, where customer processes their messages as a batch and sends them to us, up to 200 000 messages at once. They're processed quickly in the preceding processes and then they come to the "splitter". Which splits them fine, but there's no way the following services could handle them in any fashionable time.
Is there a way to limit the amount of messages the splitter keeps sending to the following services? Is there a some sort of highWaterMark sniffer or such, which would then start throttling? I know I could just set the timeout to null (JBESB-1440), but then I wouldn't be able to pickup errors (if the other service dies, I want the messages to timeout and then follow the DLQ).