2

JMS メッセージと Java コンポーネントを使用してバッチ処理を処理するミュール フローがあります。仕事が終わったら、このプロセスの結果をユーザーに通知するために電子メールを送信する必要があります。私は現在、Java コンポーネント内で、処理と電子メール送信のすべてを処理しています。Java コンポーネントから他のコンポーネントにコードをコピー/貼り付け/適用する代わりに、このコンポーネントを他のフローで再利用するために、電子メール送信操作を分離したいと考えています。私の問題は、このコンポーネントに送信したいペイロードがMap<String, Object>、フローがSerializableパラメーター (この場合は を拡張するカスタム クラスSerializable) を受け取る間であるということです。Java コンポーネントから送信される前にペイロードを変更するにはどうすればよいMap<String, Object>ですか? 電子メール コンポーネントを呼び出す前に、これに設定するパラメータがわかっている場合はどうすればよいですか?

現在、これは私が持っているものです:

<flow name="SomeBatchProcessFlow">
    <jms:inbound-endpoint queue="${some.batch.process}"
        connector-ref="JmsConnectorRef" />
    <component>
        <method-entry-point-resolver>
            <include-entry-point method="foo" />
        </method-entry-point-resolver>
        <spring-object bean="someBatchProcessComponent" />
    </component>
    <!--
        what to put here to change the payload for the Map<String, Object> I've prepared
        in SomeBatchProcessComponent#foo method?
    -->
    <jms:outbound-endpoint address="jms://${queues.emailSend}"
        connector-ref="JmsConnectorRef" />
</flow>

<flow name="EmailSendFlow">
    <jms:inbound-endpoint queue="${queues.emailSend}"
        connector-ref="JmsConnectorRef" />
    <component>
        <method-entry-point-resolver>
            <include-entry-point method="sendEmail" />
        </method-entry-point-resolver>
        <spring-object bean="emailSenderComponent" />
    </component>
</flow>

から JMS メッセージを手動で送信できることは承知していますSomeBatchProcessComponent#fooが、ラバがこの作業を処理して分離を維持することをお勧めします。

4

1 に答える 1

1

Mule フローでペイロードを設定する には、 <set-payload value="#[newPayload]"/>where newPayloadis ローカル変数を使用します。

Java コンポーネントのペイロードを変更するには、オブジェクトを返し、Map<String, Object>それが にプッシュされJMSます。

電子メールに JMS を使用するvm queues代わりに、

于 2013-10-08T01:29:44.147 に答える