当前位置: 首页 > 知识库问答 >
问题:

启用来自DB消息的camel重播机制

楚昊明
2023-03-14

Iam试图用camel IE实现重播机制,我将不得不检索所有已经保存的消息,并转发到适当的camel路由进行重新处理。这将由quartz调度器触发。

我通过使用下面的代码实现了同样的效果。

1)一旦quartz调度器被触发,fwd到处理器,处理器将查询db并将消息作为列表,并在camel exchange属性中设置相同的属性作为列表。2)使用camel,其中LoopProcessor将在exchange中的迭代中设置适当的xml。3)将其fwd到activemq,并将其转发到适当的camel路由进行重新处理。一切都很好。我看到以下两个问题a)可能有“n”个msges(10,000+)以列表的形式在camel exchange属性中可用--我可以删除发送进行处理的消息,但我认为这将在性能和内存使用方面做得更好。

谢了。

尊敬Senthil Kumar Sekar

共有1个答案

郑狐若
2023-03-14

如果消息的数量是一个问题,那么不应该一次加载所有消息

流程如下(另一个SO请参见我的答案):

  1. 在查询数据库时限制结果的数量。
  2. 为处理的数据库项设置标记(例如processedflag)
  3. 从1开始。并且只查询尚未处理的条目,直到处理完所有记录。
 类似资料:
  • 我目前正在开发一个Android应用程序,它使用Firebase消息来接收来自服务器的通知。 当应用程序强制关闭时,logcat中也会收到相同的消息。 我可以请求用户不要强制停止,但我如何阻止他们重新启动他们的设备。因此,在此背景下,我请求stackoverflow社区的帮助。我有什么办法可以知道应用程序在关闭时错过了一些消息吗?

  • 我在kafka中面临一个奇怪的问题,即在消费者应用程序重新启动后,所有来自主题的kafka消息都在重播。有人能帮我我在这里做错了什么吗? 这是我的配置: spring.kafka.consumer.auto-偏移-重置=最早 spring.kafka.enable.auto。提交=false 我的生产者配置: 消费者配置: 消费者代码: 集装箱代码 消费者配置 应用程序.属性

  • 我正在调用Apache Camel XML DSL中的Javascript文件,该文件在Apache ServiceMix中运行,如下所示: 我想在myJavascript中记录一条消息。这样消息就会显示在主Camel上下文日志中。 这里的Camel文档表示传递了CamelContext Java对象。我希望它能为记录器提供一个getter,这样我就可以在脚本中做这样的事情: 然而,这里并没有提到

  • 我正在开发一个模块,它使用来自Kafka主题的消息并发布到下游系统。在下游系统不可用的情况下,消费者不确认Kakfa消息。因此,当我的消费者收到消息时,当下游系统不可用时,kakfa的偏移量将不会被提交。但是如果我在下游系统启动后收到新消息,并且当我确认该消息时,最新的偏移量将被提交,并且消费者永远不会收到主题中没有偏移量提交的那些消息。

  • 该消息已从队列中删除,但在我的应用程序日志中,我得到一个错误······ 如果我正确理解stacktrace,那么oracle.jms api缺少一个标头JMSXGroupSeq,这并不是不可能的,因为对方没有使用oracle jms api创建消息。他和我都无法查看实际的队列(它在我们共同的客户端),所以我无法检查真正到位的头。 使用自定义headerFilterStrategy没有任何帮助,因

  • 任何关于我如何做到这一点的想法或任何可以帮助我的例子。谢谢你。