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
が、ラバがこの作業を処理して分離を維持することをお勧めします。