Everything works for me in async . To keep things simple, queues are FIFOs; plus there is one processing flow for each section. In this way, commands are always processed in the sending order . In addition, we still have scalability, since the flow per partition can simply be turned into a machine per partition without the need to redo the entire solution.
There are several cases where we may need synchronous processing (in my case, the example will be the initial registration of the user, since we need to check several things on the server before allowing him to continue). In this case, after sending the command to the user, "wait a few seconds until your registration is processed." As soon as the registration is confirmed (or not completed), the user will automatically go to the next screen. This is trivial to do with AJAX in the web interface. Desktop interfaces are even simpler.
Rinat abdullin
source share