【问题标题】:Aggregate two JMS messages from two different consumers聚合来自两个不同消费者的两条 JMS 消息
【发布时间】:2015-01-13 14:46:02
【问题描述】:

我有两个 jms 消费者,每个消费者都在不同的流程中。我想使用另一个流来聚合这两条消息的消息。并且还需要保留相关 ID,因为我需要拆分有效负载并发回消息。

    <flow name="integration-consumer-client1" doc:name="integration-consumer-client1">
    <jms:inbound-endpoint doc:name="JMS" connector-ref="Active_MQ" queue="client1.publish"/>
    <logger message="Consumes Client One = #[payload]" level="INFO" doc:name="Logger"/>
    <logger message="Client One Correlation = #[message.correlationId]" level="INFO" doc:name="Logger"/>
    <vm:outbound-endpoint exchange-pattern="one-way" path="client1" doc:name="VM"/>
</flow>
<flow name="integration-consumer-client2" doc:name="integration-consumer-client2">
    <jms:inbound-endpoint doc:name="JMS" connector-ref="Active_MQ" queue="client2.publish"/>
    <logger message="Consumes Client Two = #[payload]" level="INFO" doc:name="Logger"/>
    <logger message="Client Two Correlation = #[message.correlationId]" level="INFO" doc:name="Logger"/>
    <vm:outbound-endpoint exchange-pattern="one-way" path="client2" doc:name="VM"/>
</flow>
<flow name="integration-internetsolutionsFlow1" doc:name="integration-internetsolutionsFlow1">
    <scatter-gather doc:name="Scatter-Gather">
        <vm:inbound-endpoint exchange-pattern="one-way" path="client1" doc:name="VM"/>
        <vm:inbound-endpoint exchange-pattern="one-way" path="client2" doc:name="VM"/>
    </scatter-gather>
</flow>

我尝试对两个入站 VM 使用分散聚集,但收到以下错误:

原因:org.xml.sax.SAXParseException:cvc-complex-type.2.4.a:发现以元素“vm:inbound-endpoint”开头的无效内容。 '{"http://www.mulesoft.org/schema/mule/core":annotations, "http://www.mulesoft.org/schema/mule/core":custom-aggregation-strategy, "http://www.mulesoft.org/schema/mule/core":threading-profile, "http://www.mulesoft.org/schema/mule/core":abstract-message-processor, "http://www.mulesoft.org/schema/mule/core 之一":abstract-outbound-endpoint, "http://www.mulesoft.org/schema/mule/core":abstract-mixed-content-message-processor}' 是预期的。 在 org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(未知来源)

【问题讨论】:

    标签: jms mule aggregate


    【解决方案1】:

    错误原因是integration-internetsolutionsFlow1没有任何入站端点..

    您可以执行以下操作:-

    使用 vm:outbound-endpoint 到两个流程的相同路径 integration-consumer-client1integration-consumer-client2

    然后在integration-internetsolutionsFlow1

         <flow name="integration-internetsolutionsFlow1" doc:name="integration-internetsolutionsFlow1">
          <vm:inbound-endpoint exchange-pattern="request-response" path="Your Path" doc:name="VM" connector-ref="vmConnector" />
        <logger level="INFO" message="#[message.payload]" doc:name="Logger"/>
    <!-- you don't require a setter-getter here -->
        </flow>
    

    integration-consumer-client1integration-consumer-client2 流的出站虚拟机路径应该相同..

    这里不需要分散收集 .. 因为两个流都会将有效负载分发到相同的 VM 路径 .. 它将由 VM 入站端点接收

    【讨论】:

    • 感谢您的回复,我已经尝试过这种方法。问题是这两条消息需要聚合。我在聚合后通过 jms 将组合消息发送到另一个流。然后该流程编辑数据并将其发送回 integration-internetsolutionsFlow1
    • 使用 MEL 创建空的 Global Arraylist 并在 VM 入站端点之后将 #[message.payload] 添加到其中...然后将列表值获取到任何流中...检查此链接:- forum.mulesoft.org/mulesoft/topics/…
    猜你喜欢
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多