【问题标题】:ActiveMQ topic messages missed after listener error侦听器错误后丢失 ActiveMQ 主题消息
【发布时间】:2015-08-28 17:38:24
【问题描述】:

我有两个单独的进程运行相同的 Camel 路由来自 ActiveMQ 主题(即:具有多个订阅者的主题)的消费,并且偶尔会在其中一个消费者上遇到丢失的消息。我希望两个消费者都收到相同的消息,这就是我使用主题的原因。

我认为正在发生的是,其中一个消费者在提交其数据库事务时出错,因为我看到这样的日志:

WARN  arjuna |  || ARJUNA012125: TwoPhaseCoordinator.beforeCompletion - failed for SynchronizationImple< 0:ffff0a666262:e5aa:557ac1a0:14976, org.hibernate.engine.transaction.synchronization.internal.RegisteredSynchronization@6dc34434 >
WARN  DefaultJmsMessageListenerContainer |  || Setup of JMS message listener invoker failed for destination 'xxx' - trying to recover. Cause: JTA transaction unexpectedly rolled back (maybe due to a timeout); nested exception is javax.transaction.RollbackException: ARJUNA016053: Could not commit transaction.
INFO  DefaultJmsMessageListenerContainer |  || Successfully refreshed JMS Connection

看起来,当这发生时,另一个进程中的消费者从主题接收到另一条消息并对其进行处理,但是第一个消费者(记录警告的消费者)没有收到第二条消息。

我对 Spring 消息侦听器的内部结构并不熟悉,但是连接刷新瞬间会使主题订阅消失吗?这可以解释为什么在侦听器错误后偶尔会丢失广播消息吗?

是否有人对我可能做错了什么有任何建议,或者我的期望是否与主题的行为方式不一致?

【问题讨论】:

  • 那么,当消费者出现一段时间的情绪低落时,预期的行为是什么?
  • 你是说第一个消费者失败,JMS事务回滚,第二个消费者收到回滚的消息?
  • 如果消息应该为离线的主题侦听器持久化,您需要使用持久主题
  • @DraganBozanovic 我不知道这个问题的答案!
  • @lkmac 不,第一个消费者在一条消息上失败,然后第二个消费者收到第一个没有的消息

标签: spring apache-camel activemq


【解决方案1】:

也许这些信息对你有帮助:

对于按[A,B,C,D]顺序到达的一组消息,对于两个消费者C1和C2,消息的正常分布如下:

C1: [A, C] C2:[B,D] 由于broker不控制读进程的工作,而且处理顺序是并行的,所以是非确定性的。如果 C1 比 C2 慢,那么初始消息集可以被处理为 [B, D, A, C]。

这种行为可能会让希望消息按顺序处理并在此基础上构建消息传递应用程序的新手感到惊讶。同一发送者发送的消息按相对顺序(也称为因果顺序)进行处理的要求相当普遍。

https://habr.com/ru/post/471268/

【讨论】:

  • 有趣,但 OP 正在向所有消费者广播。而且可能不会说俄语:)
【解决方案2】:

您似乎正在使用distributed transaction 与数据库和activeMQ。仅当数据库事务成功时才发送消息。因此,数据库中的故障可能会使您的消息失败。

这就是你看到的原因

嵌套异常是 javax.transaction.RollbackException

和:

org.hibernate.engine.transaction.synchronization.internal.RegisteredSynchronization

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    相关资源
    最近更新 更多