目前,我正在使用骆驼和wmq。我试图做的是向wmq发送消息。我通过使用Spring Framework配置骆驼。以下是配置wmq的方法:
component.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版本与我的骆驼版本不同。
但是,在更改了jms版本之后,服务器上出现以下错误(关于wmq):
2014-06-05 15:14:34,859 [Axis2 Task]错误WMQMsg-预期的MQ消息格式'
MQSTR”,但收到“ MQHRF2”
怎么解决呢?再次感谢。
最佳答案
我认为您的问题出在您的JMS消息类型和转换中。
请查看以下链接,并尝试转换从stream:in
获得的消息类型。
http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_7.0.1/com.ibm.mq.csqzaw.doc/jm25524_.htm?cp=SSFKSJ_7.0.1%2F1-25-3-4-1-1-1&lang=en
http://www.capitalware.com/rl_blog/?p=1168
Processing MQ ByteMessage using JMS client