0
我有一個生產者連接到ActiveMQ代理,向我發送消息給客戶端。javax.jms.InvalidDestinationException:無法使用來自其他連接的臨時目標
- 由於它期望從客戶機一些響應,它首先創建臨時隊列和它關聯到JMS的replyTo報頭。
- 然後它將消息發送給代理並等待客戶端對臨時隊列的響應。
- 接收客戶端對臨時隊列的響應,執行所需操作並退出。
這個工作正常,大多數時候,但零星應用程序拋出錯誤信息說:「不能使用從其他連接創建的隊列」。
我無法確定什麼可能導致這種情況發生,因爲正在從當前會話本身創建臨時隊列。
還有其他人遇到這種情況,並知道如何解決它?
代碼片段:
Connection conn = myJmsTemp. getConnectionFactory().createConnection();
ses = conn.createSession(transacted,ackMode);
responseQueue = ses.createTemporaryQueue();
...
MyMessageCreator msgCrtr = new MyMessageCreator(objects,responseQueue);
myJmsTemp.send(dest, msgCrtr);
myJmsTemp.setReceiveTimeout(timeout);
ObjectMessage response = (ObjectMessage)myJmsTemplate.receive(responseQueue);
這裏MyMessageCreator
實現MessageCreator
接口。
我所要做的就是向代理髮送一條消息,並等待客戶端通過臨時隊列進行響應。另外我正在使用一個連接工廠來獲得連接。
這是代碼片段:
Connection conn = myJmsTemp。 。getConnectionFactory()的createConnection();
ses = conn.createSession(transacted,ackMode);
responseQueue = ses.createTemporaryQueue();
...
MyMessageCreator msgCrtr = new MyMessageCreator(objects,responseQueue);
myJmsTemp.send(dest,msgCrtr);
myJmsTemp.setReceiveTimeout(timeout);
ObjectMessage response =(ObjectMessage)myJmsTemplate.receive(responseQueue);
MyMessageCreator類實現MessageCreator並實現createmessage方法。 你能解釋一些奇怪的東西嗎? – Hari
我真的可以閱讀這個無格式的代碼,你可以編輯你的原始文章,並添加一些代碼部分,以顯示你在做什麼? –
Tim,我已將格式化的代碼片段添加到原始帖子中。我不試圖獲得新的連接或重新初始化連接對象。請注意,製作人在大多數時間都能正常工作,但很少有人會拋出我們在此討論的錯誤。 – Hari