Мы используем MDB, где очередь сохраняется в базе данных, что дает преимущество в том, что сообщения не теряются, если система выходит из строя.
Вы также можете установить асинхронный договор между участвующими сторонами. Под этим я подразумеваю, что клиент будет отправлять вам сообщение, и вместо того, чтобы выполнять большую работу с весом и возвращать ответ, вы просто отправляете ответ с подтверждением, а затем отправляете им асинхронное сообщение с полными результатами.
Вам также следует установить протокол, позволяющий клиенту повторно отправить сообщение, если он не получил полный ответ в течение установленного времени.