Вот что делает мое приложение
1) Клиентское приложение Отправить сообщение запроса с correlationId на REQUEST_QUEUE_1 и ожидает ответного сообщения на RESPONSE_QUEUE_1, используя correlationId
2) Серверное приложение получает сообщение от REQUEST_QUEUE_1
3) Серверное приложение обрабатывает сообщение, полученное на шаге 2
4) Серверное приложение отправляет ответ на RESPONSE_QUEUE_1 асинхронно с correlationId, полученным как часть сообщения с шага 2.
5) Поток клиентского приложения с шага 1 получает ответ от RESPONSE_QUEUE_1 для correlationId.
Вот фрагмент кода Java-программы, выполняющей sendMessage и receiveMessage в очередь и из очереди как на стороне клиента, так и на стороне сервера - https://gist.github.com/graj2014/f580b35579bf8a94029d.
Этот код отлично работает при тестировании в одном запросе к клиентскому приложению с использованием jmeter. Однако одновременный запрос нескольких пользователей оставляет некоторые сообщения в неподтвержденном состоянии и соответствующие ответы Клиенту получают тайм-аут.
Проблема в методе receiveMessage с msgCorrelationId, который соответствует сообщению в очереди для подтверждения.