【问题标题】:How to send a different payload from java component?如何从 java 组件发送不同的有效负载?
【发布时间】:2013-10-14 17:00:17
【问题描述】:

我有一个使用 JMS 消息和 Java 组件来处理批处理的 mule 流。完成工作后,我需要发送电子邮件通知用户此过程的结果。我目前正在一个 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>

我知道我可以从 SomeBatchProcessComponent#foo 手动发送 JMS 消息,但我希望 mule 处理这项工作以保持其解耦。

【问题讨论】:

  • 帮自己一个忙,停止使用component+method-entry-point-resolver+spring-object,而改用invoke消息处理器。它是一个单一的 XML 元素,允许在任何 bean 上调用任何方法。
  • @DavidDossot 谢谢,我试试看。

标签: java jms mule


【解决方案1】:

要在 mule 流中设置有效负载,请使用 &lt;set-payload value="#[newPayload]"/&gt; 其中newPayload 是局部变量。

要更改 Java 组件中的有效负载,请返回一个 Map&lt;String, Object&gt; 对象,该对象将被推送到 JMS

您也可以查看vm queues,而不是使用 JMS 发送电子邮件,

【讨论】:

  • 那我怎样才能在 mule 流中检索返回的 Map&lt;String, Object&gt; 以将其设置在 &lt;set-payload&gt; 中?
  • 如果组件返回,您的有效负载本身将设置为Map&lt;String, Object&gt;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-19
  • 1970-01-01
相关资源
最近更新 更多