1

IBMMQ v6.0.2 を jbossESB と統合しようとしています。
QA QUEUEMANAGER の 1 つで、IBMMQ で使用可能なローカル Queue があります。jboss ESB の JMSprovider を使用して QUEUE をリッスンできます。(タイプ jms_text の) メッセージがドロップされるとすぐに、esb はそれをリッスンしてピックアップし、次のアクションに到達する前に次のエラー メッセージをスローします。

エラー [JmsComposer] サポートされていない JMS メッセージ タイプ: com.ibm.jms.JMSTextMessage

これが私が従った手順です。

  1. jboss-service.mxl : 接続ファクトリーと QUEUE の定義
  2. jar ( com.ibm.mq.* ) を ${jbossesb}/server/${mynode}/lib に追加
  3. jboss-esb.xml に jms lsinterner 設定を追加

ここで不足しているものを教えてください... カスタム 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>
4

2 に答える 2

2

少し遅い応答ですが、誰かがこれを読んだ場合、答えは次のとおりです。

queuestartEsbChanneljmstextmessages を配信している同じキューをリッスンしており、 false (デフォルト値)にis-gateway設定されています。

is-gatewayfalseの場合、そのリスナーで受信できるのは ESB メッセージのみです。

于 2012-04-25T12:34:31.570 に答える
1

com.ibm.mq.* ではなく、JMS アプリの CLASSPATH に com.ibm.mqjms.jar が表示されることを期待していました。

使用している WMQ のバージョンに応じて、Infocenter の環境変数ページを参照してください。WMQ V6 のページはこちら(表 2 を参照)、WMQ v7 のページはこちら(表下の注を参照) です。クラスはバージョン間で再パッケージ化されており、CLASSPATH 要件はまったく異なることに注意してください。

UNIX フレーバーでは、setmqjms スクリプトを実行して、WMQ JMS の環境を構成できます。AIX では /opt/mqm/java/bin または /usr/mqm/java/bin にあります。ただし、これは標準の WMQ クライアントのインストールを前提としています。jar をつかんで再配置しただけでは、機能しません。特に、com.ibm.mq* jar を取得しただけでは機能しない可能性があります。クライアントのインストールで提供される初期検証テスト (IVT) を実行することで、インストールを検証できます。完全な WMQ クライアントを使用するもう 1 つの利点は、すべてのトレース ユーティリティ、サンプル コード、およびその他の診断がインストールされることです。

もう 1 つのアドバイスとして、WMQ サーバーが v6 であっても、必ず WMQ v7 クライアントを使用してください。これは、WMQ v6 が来年サービスを終了し、それ以降はサポートされなくなるためです。v7 クライアントを今すぐ使用すると、後で移行や CLASSPATH の変更などを節約できます。さらに、v7 クラスには、v7 QMgr と一緒に使用すると、同じまたは異なる QMgr への自動クライアント再接続など、多くのクールな新機能があります。構成。WMQ クライアントのインストールは、SupportPac MQC7として無料でダウンロードできます (登録が必要です) 。

于 2010-06-03T13:34:04.567 に答える