2014-09-30 131 views
0

我使用Spring JMS和ActiveMQ作爲代理並在Tomcat上運行應用程序。 我有一個隊列,讓我們說queue.a。在我的網絡應用程序中,每當我啓動我的web應用程序時,我都已經有一個MessageListener運行。唯一的是,我想添加某種隊列消費者,但同步。我已經嘗試使用JmsTemplate等。但是,當我的兩個消費者(偵聽器異步&使用者同步)啓動並且我觸發.receive()方法時,發送到隊列的消息總是吸收一直處於聯機狀態的消息偵聽器自Web應用程序啓動。超時結束後,同步接收器根本不消耗任何消息。1隊列中的同步和異步消息接收器(Spring和ActiveMQ)JMS API

但是,當我註釋掉messageListener時,同步客戶運行良好。

我還是一個新手,你們有沒有辦法讓我想要的可能?謝謝!對不起,我的英語不好:(

+1

您是否使用默認值在你的一切消費者和隊列配置(預取,排他,優先等)? – 2014-09-30 13:25:12

+1

我認爲是的,因爲我是在春季使用JMS新手..是否有任何方法來配置?它是否在bean配置?我只是按照一切文檔和網絡 – Nico 2014-10-01 01:41:11

+2

這聽起來非常像你有一個排除一位消費者。您是否在消費者上設置了類似以下內容的消息:YOUR.QUEUE?consumer.exclusive = true您是否驗證過使用receive()的消費者在隊列中具有句柄(消費者數+1)? – 2014-10-01 13:32:01

回答

0
<bean id="someQueue" class="org.apache.activemq.command.ActiveMQQueue"> 
    <constructor-arg index="0" value="TEST.QUEUE?consumer.priority=10" /> 
</bean> 

,然後,將其設置到您的收聽/接收器豆:

<bean id="someReceiver" class="blah.blah.SomeReceiver"> 
    <property name="destination" ref="someQueue" /> 
    <property name="jmsTemplate" ref="jmsTemplate" /> 
</bean> 

這是否解決您的問題