0
我已經寫了一個小型測試,在此將消息發送到現有的ActiveMQ FORWARD隊列。不幸的是,該消息被髮送到隊列,但沒有收到。下面你會發現我的兩次嘗試接收這條消息:通過MyMessageListener和MessageService。兩種方法均失敗。 這裏是我的測試:使用服務或偵聽器在ActiveMQ中使用消息
Map<Parameter, String> params = new HashMap<Parameter, String>();
params.put(key1, "601");
params.put(key2, "3000");
Map<String,String> headers = Collections.singletonMap("method-name","prepareHotDrink");
Message<?> msg = MessageBuilder.withPayload(params)
.copyHeaders(headers)
.build();
boolean i = inputChannel.send(msg);
這是我的配置文件:
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="${jms.primary.server}"/>
</bean>
<!-- spring integration beans -->
<int-jms:channel id="inputChannel" queue-name="FORWARD"
connection-factory="connectionFactory" auto-startup="true">
</int-jms:channel>
<!-- Consumers -->
<int-jms:message-driven-channel-adapter
id="jmsIn"
container="messageListenerContainer"
channel="inputChannel"
extract-payload="true" />
<int:service-activator input-channel="inputChannel"
ref="messageService"
method="processMessage"/>
<bean id="messageListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory"/>
<property name="destination" ref="requestQueue"/>
<property name="exposeListenerSession" value="false"/>
<property name="messageListener" ref="messageListener" />
</bean>
<bean id="messageListener" class="com.ucware.ucpo.forward.mess.MyMessageListener"/>
<bean id="messageService" class="com.ucware.ucpo.forward.jms.MessageService"/>
<bean id="requestQueue" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg name="name" value="FORWARD"/>
</bean>
檢查你正在編寫,並從同一隊列中讀取消息/。 –
爲什麼你有一個jms支持的通道和一個消息驅動的適配器在同一個隊列上監聽?嘗試用' '替換jms支持的頻道。 JMS支持的通道用於提供持久性,您不應該使用它來向JMS發送/接收任意消息。 –
我可以將郵件發送到FORWARD隊列,但我無法收到它們。 – luksmir