1

オブジェクトを構築し、それを JMS アウトバウンド エンドポイントに転送するカスタム インターセプタを備えた Mule フローがあります。JMS エンドポイントは、オブジェクトを JMS StreamMessage に変換しようとして例外をスローします。私が望むのは、代わりに、エンドポイントがオブジェクトを JMS ObjectMessage に変換することです。それはどのように行われますか?

これが私の流れです。

<spring:beans>
    <spring:bean id="connectionFactoryFactory" name="connectionFactoryFactory"
        class="ConnectionFactoryFactory">
        <spring:property name="properties">
            <spring:props>
                <spring:prop key="imqAddressList">mqtcp://localhost:30001/jms</spring:prop>
                <spring:prop key="imqReconnectAttempts">-1</spring:prop>
            </spring:props>
        </spring:property>
    </spring:bean>

    <spring:bean id="connectionFactory" name="connectionFactory"
        factory-bean="connectionFactoryFactory" factory-method="createConnectionFactory" />
</spring:beans>

<jms:connector name="JMSConnector" connectionFactory-ref="connectionFactory"
    specification="1.1" doc:name="JMS" />

<flow name="Request" doc:name="Request">
    <quartz:inbound-endpoint responseTimeout="10000"
        doc:name="InfoRequest" jobName="InfoRequest" repeatInterval="5000">
        <quartz:event-generator-job />
    </quartz:inbound-endpoint>
    <custom-interceptor class="StateRequest"/>
    <jms:outbound-endpoint connector-ref="JMSConnector"
        doc:name="JMS" topic="requests"/>
</flow>

また、オブジェクトを JMS Message Transformer に追加しようとしました。

<jms:object-to-jmsmessage-transformer returnClass="javax.jms.ObjectMessage" name="Object_to_JmsMessage" doc:name="Object to JmsMessage"/>

    <jms:outbound-endpoint connector-ref="JMSConnector"
        doc:name="JMS" topic="requests" transformer-refs="Object_to_JmsMessage"/>
4

1 に答える 1

0

なぜならRequest extends LinkedList<RequestId> implements Serializable、Mule は自動的にこの型をStreamMessage.

残念ながら、この動作は静的クラスにあるため、別の動作と交換するのは困難です。ObjectMessageコードまたはサブクラスから独自の JMSを作成して、 type のペイロードを呼び出すAbstractJmsTransformer独自のフレーバーを作成します。ObjectToJMSMessageJmsMessageUtils.serializableToMessageRequest

于 2013-03-12T21:46:43.747 に答える