apache-camel 将批量消息放入 JMS

apache-camel put bulk messages into JMS

我正在设置一个项目,其中 JMS 的批量提交必须一次性完成。使用事务来重新启动消息处理,因此需要考虑如何将 "x" 条消息推送到 JMS 队列并执行 JMS 提交。

我目前正在做的是创建一个 JMS 消息,其中一个长字符串附加了我希望一次性提交的消息。 然后使用 Splitter 在另一个路由中将消息拆分为多个。 最后,使用另一个路由将消息发送到 JMS(作为批量提交)。

    <route>
        <from uri="file:sample"/>
        <split streaming="true">
            <tokenize token="\n"/>
            <to uri="activemq:queue:dest"/>
        </split>
    </route>

我希望构建一个路由来控制何时发出 JMS 提交。

用例是尝试从队列 A 中读取一条消息并创建许多消息(令该数字为 "x")。并将它们推送到队列 B。但是,我希望像 DB 一样进行批量提交(或批量提交)。我试图高效地不创建与 JMS 的连接并进行单独提交。

我没有完全明白你的问题。也许这只是使用何种错误处理的问题。

设置:您有一个带有 事务处理的 JMS 消费者 的 Camel 路由,并且在该路由中您将 多条消息发送到一个或不同的队列 .

好的情况:路由成功完成,所有 JMS 消息都已传递。

错误情况:如果您的路由遇到 错误,比方说在处理过程中,一些 JMS 消息已经 "sent",一些不是

在这种情况下,根本没有发送任何消息,因为 Camel 进行了回滚,并且已经 "sent" JMS 消息并未真正发送,或者更准确地说,它们尚未提交,并且他们不会提交。

重要细节:Camel 不能处理错误。如果是,则错误不会传播到代理,因此会提交使用的消息,JMS 事务也是如此。