【发布时间】:2014-07-26 06:52:10
【问题描述】:
目前我正在使用骆驼和 wmq。我试图做的是向 wmq 发送消息。我使用 Spring Framework 配置骆驼。以下是配置 wmq 的方法:
组件.xml
<bean id="websphere-mq" class="org.apache.camel.component.jms.JmsComponent">
<property name="connectionFactory">
<bean class="com.ibm.mq.jms.MQQueueConnectionFactory">
<property name="transportType">
<util:constant static-field="com.ibm.mq.jms.JMSC.MQJMS_TP_CLIENT_MQ_TCPIP" />
</property>
<property name="hostName" value="localhost" />
<property name="port" value="1414" />
<property name="queueManager" value="localmanager" />
<property name="channel" value="CH.ADM1" />
<property name="CCSID" value="819"/>
<property name="useConnectionPooling" value="true" />
</bean>
</property>
</bean>
config.xml
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="stream:in?promptMessage=Ausweisnummer: "/>
<process ref="TransformToXML"/>
<to uri ="xslt:mobako.sender.xsl"/>
<to uri ="websphere-mq:queue:LSMH.ZKSEAP.SERVICEBUS"/>
</route>
<route>
<from uri="websphere-mq:queue:ZKSEAP.LSMH.SERVICEBUS"/>
<to uri="stream:out"/>
</route>
</camelContext>
查看wmq的时候发现wmq一直在监听我的进程,但是没有收到任何消息。
然后为了检查我的 wmq 配置是否正确,我尝试将我的 config.xml 更改为如下内容:
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="websphere-mq:queue:ZKSEAP.LSMH.SERVICEBUS"/>
<to uri="stream:out"/>
</route>
</camelContext>
之后我尝试手动将消息写入 wmq。当我尝试运行我的进程时,来自 wmq 的消息会写在我的控制台上。
那我总结一下,用我的配置,我可以从wmq得到消息,但是我不能写到wmq。
实际上是什么问题?我的配置有什么问题或遗漏吗?非常感谢。
已编辑
嘿,我终于发现了问题所在。 问题是:我的jms版本和我的camel版本不一样。 但是,在我更改 jms 版本后,我的服务器上出现以下错误(关于 wmq):
2014-06-05 15:14:34,859 [Axis2 任务] 错误 WMQMsg - 预期的 MQ 消息格式' MQSTR ',但收到 'MQHRF2 '
如何解决?再次感谢。
【问题讨论】:
-
您是否观察到 mq 层抛出的任何错误?链接异常中有任何 mq 返回码吗?您尝试放置的队列是否已为此应用程序或通道设置权限?您运行的是 MQ 7.1/7.5 还是更低版本?
-
我已经检查过了,没有错误。仅供参考,我正在运行 MQ 7.1
-
您确定在
xslt:行之后有一个有效的交换正文,您可以在该行和下一行之间添加一个日志语句吗? -
嗨 nsupathy 和 vikingsteve,我发现了问题所在,这是我的 jms 版本。但是我收到了一个关于 wmq 的新错误。其中说:“2014-06-05 15:14:34,859 [Axis2 Task] ERROR WMQMsg - Expected MQ message format 'MQSTR', but received 'MQHRF2'”你知道如何解决吗?非常感谢
-
MQHRF2 是 MQ JMS 格式。消息通常有一个
标头(在 XML 中),而 MQSTR 只是纯文本。读者期待的是纯文本消息,但遇到的是 JMS 格式。
标签: java spring jms apache-camel ibm-mq