【问题标题】:How to send messages from Mule to ActiveMQ in batches如何从Mule批量发送消息到ActiveMQ
【发布时间】:2016-04-13 09:31:30
【问题描述】:

在 mule 中,我有一个流接收带有 500mb xml 文件的 InputStream。

我想按照一定的规则拆分 xml 文件。

结果是我需要发送到 ActiveMQ 队列的 390000 条消息。

如果我在一个事务中发送所有消息,ActiveMQ 将给出内存不足异常。

如果我不使用事务,它会成功,但会慢很多。

批量发送 1000 条消息的最佳方式是什么?

我可以使用标准组件吗?

我正在使用 ActiveMQ 5.13 和 Mule 3.7

谢谢

【问题讨论】:

    标签: java mule activemq


    【解决方案1】:

    我认为您正在寻找批量提交doc here。 一旦收集到指定数量的记录,该组件将执行内部流组件。 示例:

    <batch:commit size="100" doc:name="Batch Commit">
        <!-- Put here all the message processor you want for example the active mq one -->
    </batch:commit>
    

    请注意,事务仅允许在步骤级别进行,因此也允许在我认为这正是您正在寻找的提交块中。

    脚注:批处理提交处理器只允许在批处理步骤中。

    希望对你有帮助

    问候

    【讨论】:

    • 感谢您的信息,但我应该指定我使用社区版。批量提交仅适用于企业版。
    • 模拟这种行为的一种方法是使用内存对象存储中的 mule 来存储您的迭代计数并在达到正确计数后触发另一个特定流。对象存储可以通过 java 或通过连接器github.com/mulesoft/objectstore-connector 使用。这是唯一的方法,因为您将尝试在批处理步骤中使用的任何变量(会话、流、批处理)在移动到下一个项目时都会失去状态。希望这会有所帮助
    猜你喜欢
    • 2011-07-24
    • 2014-06-28
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    • 2017-01-10
    相关资源
    最近更新 更多