Я пытаюсь реализовать тестирование производительности в ActiveMQ, поэтому настроил базового производителя и потребителя для отправки и получения сообщений через очередь. Я создал производителя без проблем, заставляя его писать определенное количество сообщений в очередь:
for(int i = 0; i < numberOfMessages; i++){
try{
String message = generateText(sizeOfMessage);
produceMessage(message);
}
catch (Exception e) {
logger.error("Caught exception while sending message", e);
}
}
Это продолжается до завершения без проблем, и я подтвердил это проверками на веб-сайте администратора, которые имеют правильное количество ожидающих сообщений.
Проблема возникает, когда я пытаюсь получить сообщения из очереди. Используя простого потребителя для чтения из очереди, он будет читать различное количество сообщений из очереди, но затем остановится при попытке получить одно из сообщений. Я вижу, что в очереди все еще есть сообщения, которые нужно прочитать, но клиент не выполнит прохождение одного из сообщений.
Я использую простой метод для получения сообщений:
Message message = jmsTemplate.receive();
и это работает для некоторых сообщений (около 20-30), но затем просто блокируется. Мне предложили, чтобы некоторые символы в сообщении могли быть escape-символами (я использовал случайную строку различной длины, потому что это просто тест производительности, а не отправлял какой-либо контент), поэтому я изменил все сообщения к той же строке, которая является повторением символа '2' и до сих пор не повезло.
Я использую конфигурацию Spring для загрузки всех компонентов, необходимых для доступа к очереди ActiveMQ, и очередь работает на моем локальном хосте.