我試圖在ActiveMQ上實現性能測試,因此設置了基本的生產者和使用者來通過隊列發送和接收消息。我創建了一個製片人,沒有任何問題,得到它寫的消息隊列特定號碼:Java 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),但是隻是鎖定。有人向我建議,消息中的一些字符可能是一個轉義字符(我使用的是隨機字符串,因爲這只是一個性能測試,而不是實際發送任何內容),所以我更改了所有消息到相同的字符串,這是字符'2'的重複,仍然沒有運氣。 我使用Spring配置來加載訪問ActiveMQ隊列所需的所有組件,並且隊列在本地主機上運行。