使用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"/>
答案 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>