[英]JbossESB jmsProvider cannot convert IBMMQ JMS Message JMSTextMessage
我正在尝试将IBMMQ v6.0.2与jbossESB集成。
我们的QA QUEUEMANAGER之一在IBMMQ上提供了本地队列。 我可以使用jboss ESB的JMSprovider收听队列。 一旦丢弃了消息(类型为jms_text),esb就会监听并拾取它,然后在执行下一个操作之前,它会抛出以下错误消息。
错误[JmsComposer]不支持的JMS消息类型:com.ibm.jms.JMSTextMessage
这是我遵循的步骤。
请在这里指导我所缺少的...我需要创建自定义MessagePlugin吗?
jboss-esb看起来像这样
<jms-provider name="WSMQ" connection-factory="MQQueueConnectionFactory">
<jms-bus busid="queuestartGwChannel"> <jms-message-filter
dest-type="QUEUE"
dest-name="wsmq/SerivceOrderQueue"
acknowledge-mode ="AUTO_ACKNOWLEDGE"
/>
</jms-bus>
<jms-bus busid="queuestartEsbChannel">
<jms-message-filter
dest-type="QUEUE"
dest-name="wsmq/SerivceOrderQueue"
/>
</jms-bus>
</jms-provider>
jboss-service.xml看起来像这样
<mbean code="jmx.service.wsmq.WSMQConnectionFactory"
name="jmx.service.wsmq:service=MQQueueConnectionFactory">
<attribute name="JndiName">MQQueueConnectionFactory</attribute>
<attribute name="JMSStyle">Queue</attribute>
<attribute name="IsXA">false</attribute>
<attribute name="QueueManagerName">SQAT0083</attribute>
<attribute name="HostName">111.111.111.111</attribute>
<attribute name="Port">1415</attribute>
<attribute name="Channel">MYCO.SVRCONN</attribute>
<attribute name="TransportType">CLIENT</attribute>
<depends>jboss:service=Naming</depends>
</mbean>
<mbean code="jmx.service.wsmq.WSMQDestination"
name="jmx.service.wsmq:service=WSMQRequestQueue">
<attribute name="JndiName">wsmq/SerivceOrderQueue</attribute>
<attribute name="JMSStyle">Queue</attribute>
<attribute name="QueueManagerName">SQAT0083</attribute>
<attribute name="DestinationName">MYCO.SERVICEORDER.QA01.QL01</attribute>
<attribute name="TargetClient">MQ</attribute>
<depends>jboss:service=Naming</depends>
</mbean>
我正在使用jboss-eap-4.3。 真的感谢任何帮助。
这是我的服务标签看起来像jboss-esb.xml
<listeners>
<jms-listener name="MQ-Gateway"
busidref="queuestartGwChannel"
is-gateway="true" maxThreads="1"
/>
<jms-listener name="MQ-EsbListener" busidref="queuestartEsbChannel" />
</listeners>
<actions mep="OneWay">
<action name="serviceOrderMarshaller"
class="com.my.esb.actions.ServiceOrderMessageUnMarshallerAction"
process="unmarshalPayload">
<property name="springContextXml" value="spring/mainApplicationContext.xml"/>
</action>
<action name="serviceOrderStaging"
class="com.my.esb.actions.ServiceOrdersStagingAction"
process="stageServiceOrders">
<property name="springContextXml" value="spring/mainApplicationContext.xml"/>
</action>
<action name="marginAndLeadTimeRetriever"
class="com.my.esb.actions.MarginAndLeadTimeRetrieverAction"
process="retrieveJobCodeInfo">
<property name="springContextXml" value="spring/mainApplicationContext.xml"/>
</action>
<action name="createDraftRequestMapper"
class="com.my.esb.actions.CreateDraftRequestMapperAction"
process="mapData">
<property name="springContextXml" value="spring/mainApplicationContext.xml"/>
</action>
<action name="omsCreateDraftRequestTranslator"
class="com.my.esb.actions.OMSCreateDraftRequestTranslatorAction"
process="translateData">
<property name="springContextXml" value="spring/mainApplicationContext.xml"/>
</action>
<action name="createDraftRequestProcessor"
class="com.my.esb.actions.CreateDraftRequestProcessorAction"
process="dispatchRequest">
<property name="springContextXml" value="spring/mainApplicationContext.xml"/>
</action>
</actions>
回复迟了一点,但是如果有人读过这个,答案是:
queuestartEsbChannel
正在侦听传递jmstextmessages的队列,并且is-gateway
设置为false (默认值)。
如果is-gateway
为false ,则只能在该侦听器上接收ESB消息。
我本来希望在CLASSPATH中看到JMS应用程序的com.ibm.mqjms.jar,而不是com.ibm.mq. *。
根据您使用的WMQ的版本,请参考信息中心中的“环境变量”页面。 WMQ V6页面在此处 (请参阅表#2),WMQ v7页面在这里 (请参见下表和注释)。 请注意,这些类已在版本之间进行了重新打包,并且CLASSPATH的要求大不相同。
在UNIX上,可以运行setmqjms脚本来配置WMQ JMS的环境。 它位于AIX上的/ opt / mqm / java / bin或/ usr / mqm / java / bin中。 不过,这假定安装了标准的WMQ客户端。 如果您只是抓住罐子并重新放置它们,它将无法正常工作。 特别是,如果您只是抓住com.ibm.mq * jar,则可能无法正常工作。 您可以通过运行客户端安装随附的初始验证测试(IVT)来验证安装。 使用完整的WMQ客户端的另一个好处是,安装了所有跟踪实用程序,示例代码和其他诊断程序。
另一项建议是, 即使WMQ服务器位于v6上 ,也请确保使用WMQ v7客户端。 这是因为WMQ v6将于明年停用,此后将不再受支持。 现在使用v7客户端将为您节省以后的迁移,更改CLASSPATH等。此外,与v7 QMgr一起使用时,v7类具有许多很酷的新功能,例如自动将客户端重新连接到相同或不同的QMgr,具体取决于您的组态。 WMQ客户端安装可以免费下载(需要注册)作为SupportPac MQC7 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.