我的應用程序是基於Spring的應用程序。我使用activemq作爲經紀人。我在應用程序中管理兩個不同的隊列接收消息。同步彈簧ActiveMQ接收器
對於每個隊列,我的應用程序的目標是偵聽在代理上發送的消息,然後繼續消息(讀取消息,執行數據庫操作,接收來自此消息的信息等),然後處理下一條消息治療是同步的,我想按照他們到達的順序進行消息)。
我的實際設計中,這是一個:
我創建一個線程
<bean id="pollThread" class="my.app.receiver" init-method="start" destroy-method="interrupt">
</bean>
的run()在一段時間(true)循環線程調用,它確實的方法的方法:
- 此線程創建一個連接到活動mq和塊與接收
- 收到後,我關閉連接並處理消息(數據庫的東西等)
- 處理完成,方法
的結束,然後重新開始治療(有聽得到,處理等)
我的問題是:是否有任何的方式來設計更好?我唯一的強制過程是按照到達順序繼續發送消息,並在處理下一條消息之前進行處理。
我讀過很多關於JMSTemplate等等的東西,但是我迷失了所有的信息。
其實我最好的猜測是太創建PooledConnectionFactory(因爲我們只需要使用的ActiveMQ和CachingConnectionFactory似乎已經在我們的架構中重要的限制),並把它限制在一個concurrentConsumer。然後使用MessageListener接口繼續我的消息。
感謝
對不起,我的延遲響應。你的回答與我在帖子和你回答的時間之間實現的結果類似。我最終使用了PooledConnectionFactory和jms命名空間:[spring-jms-3.0](http://www.springframework.org/schema/jms/spring-jms-3.0.xsd) 併發性參數是maxConcurrentConsumers也設爲1。 – Steph0