Spring Integration队列没有收到消息但是频道正在获取

时间:2014-03-27 06:28:13

标签: ibm-mq spring-integration spring-jms

使用Spring Integration在Websphere MQ中将消息从一个队列传输到另一个队列。

OutPut频道显示消息正在进行,但我无法从MQ Explorer中看到Queue。如何提交会话?而且我无法阻止java应用程序。如何通过连接停止优雅地停止? 我在哪里做错了? 这是上下文配置 -

             

<int:logging-channel-adapter log-full-message="true" id="logger" level="INFO"/>

<bean id="jmsConnectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory">
    <property name="hostName" value="localhost" />
    <property name="port" value="1414" />
    <property name="queueManager" value="TEST" />
    <property name="transportType" value="1" />
</bean>

<bean id="inQueue" class="com.ibm.mq.jms.MQQueue">
    <constructor-arg value="TESTQ" />
</bean>
<bean id="outQueue" class="com.ibm.mq.jms.MQQueue">
    <constructor-arg value="DEST_QUEUE" />
</bean>
<int:channel id="readFromChannel">
 <int:interceptors>
  <int:wire-tap channel="logger"/>
</int:interceptors>
</int:channel>
<int:channel id="sendToChannel" >
    <int:queue/>
<int:interceptors>
  <int:wire-tap channel="logger"/>
</int:interceptors> 
</int:channel>

<int-jms:message-driven-channel-adapter id="jmsInAdapter"
connection-factory="cachingConnectionFactory"
destination="inQueue"
channel="readFromChannel" />

<int-jms:message-driven-channel-adapter id="jmsOutAdapter"
connection-factory="cachingConnectionFactory"
destination="outQueue"
channel="sendToChannel" />


<bean id="myMessenger" class="test.MyMessenger" />     

<int:service-activator id="servAct" input-channel="readFromChannel" output-channel="sendToChannel" ref="myMessenger" method="transfer"/>

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的用例,您希望将邮件从TESTQ转移到DEST_QUEUE。但是你有<int-jms:message-driven-channel-adapter>来从他们那里读取消息,但没有人将消息发送到DEST_QUEUE

<int:service-activator>来自readFromChannel的{​​{1}}消息,表示“从TESTQ发送消息”,但会向sendToChannel发送消息。但它没有说您向DEST_QUEUE发送消息。

这是因为<int-jms:message-driven-channel-adapter>用于从JMS(在您的情况下为MQ)中读取消息。

要向JMS发送消息(根据您的情况发送到DEST_QUEUE),您必须使用<int-jms:outbound-channel-adapter>,并且没有理由将sendToChannel标记为<queue>