in the past we used the Activiti ProcessEngine (Version 5.2). After some time we noticed that sometimes incoming messages are not handled because no one was listening. Digging into that problem we noticed some timing issue. Our own ServiceTask sends a message (RabbitMQ, not important), the next step in the process is to wait for the answer. Sometimes the answer came so fast, that somehow the MessageEventSubscription was not set at that time (task not comitted).
We solved this by implementing a SendAndReceiveMessageTask, that registers a Subscription for a message, sent the outgoing message and then waited for the answer - which will always be caught by the process as the listener was registered early.
We are approaching Flowable 6 in a new project - so we are checking our legacy solution.
So my question is: How can be assured that we don’t lose message due to timing issues in the process engine or how to design such a process correctly (if this is sufficient)?