apache flume-由多个使用者从单个消息队列摄取数据

ki0zmccv  于 2021-06-04  发布在  Flume
关注(0)|答案(1)|浏览(496)

我目前正在开发apacheflume代理,它可以从单个消息队列(solace)接收数据。由于消息处理因大小而变慢,并且将有许多消息要接收,因此我考虑使用多个代理来使用它们。然而,挑战在于,多个代理可能会接收相同的消息,从而在接收器(登陆桶)中产生重复的消息。当一个代理处理消息(未确认)时,如果另一个代理从队列中获取消息,则可能发生这种情况。如果你有类似的经验和想法来解决这个问题,请分享。谢谢。

w41d8nur

w41d8nur1#

您可以使用非独占队列以循环方式在多个代理(使用者)之间分发消息。
不会有任何重复,除非有一些潜在的错误(例如某个消费者断开连接),导致solace messagebroker将已传递但未确认的消息重新传递给另一个消费者。
在这种情况下,jms消息将被标记为重新传递,并且应用程序必须执行一些逻辑来处理这个可能重复的消息。
虽然不是严格必要的,但考虑处理应用程序无法成功处理的“有毒”消息可能也是一个好主意,这些消息可能会导致redeliver fail、redeliver fail、redeliver fail循环。
您可以通过确保您的消息符合死消息队列的条件、配置一个死消息队列并调整队列上的“max redelivery”设置来实现这一点。
这将确保“毒”消息最终会被移动到死消息队列,而不是不断地重新传递到应用程序。

相关问题