Apache Flume - 由多个使用者从单个消息队列中提取数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache Flume - 由多个使用者从单个消息队列中提取数据相关的知识,希望对你有一定的参考价值。

我目前正在开发Apache Flume代理,可以从单个消息队列(Solace)中提取数据。由于消息处理由于大小而很慢并且会有很多消息需要摄取,我想有多个代理来消费它们。然而,挑战将是多个代理可能采用相同的消息导致接收器(登陆桶)中的重复。当一个代理正在处理消息(未确认)时,如果另一个代理从队列中获取消息,则可能发生这种情况。如果您有类似的经验和想法来解决这个问题,请分享。谢谢。

答案

您可以使用非独占队列以循环方式在多个代理(使用者)之间分发邮件。

除非存在一些潜在的错误(例如其中一个消费者断开连接),否则将不会有任何重复,从而导致Solace消息代理将已传递但未确认的消息重新传递给另一个消费者。

在这种情况下,JMS消息将被标记为已重新传递,并且您的应用程序必须执行一些逻辑来处理此可能重复的消息。


虽然不是绝对必要,但考虑处理应用程序无法成功处理的“毒药”消息也是一个好主意,并且可能导致重新发送失败,重新发送失败,重新发送失败循环。

您可以通过确保消息符合死信息队列,配置死信息队列并调整队列中的“最大重新传递”设置来执行此操作。

这将确保“毒药”消息最终将被移动到死信息队列,而不是连续地重新传送到您的应用程序。

以上是关于Apache Flume - 由多个使用者从单个消息队列中提取数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Apache Flume 过滤多个源数据?

日志收集系统之Apache Flume

Apache Flume:无法提交事务。达到堆空间限制

flume 1.8.0 开发基础

如何从 Apache Spark 中的单个文件记录创建多个 RDD 行

apache-flume重启脚本