【问题标题】:Multi-instances of Subscriber Queue | ActiveMQ订阅者队列的多实例 |活动MQ
【发布时间】:2017-03-07 19:45:24
【问题描述】:

使用activeMQ作为媒介在模块之间传递数据。让生产者 P、订阅者 S1 S2 从 P 中读取数据。使用队列作为数据集以循环方式调度数据。 S1、S2 正在按预期接收数据。有了S1,S2就是为了实现故障安全和负载均衡。 ACK 在数据处理完毕后发送,以确保我们不会遗漏任何来自 P 的数据。

观察到 S1 因读取某些数据而关闭且未完全处理的情况(因此,尚未发送任何 ACK)。我期待 ActiveMQ 将数据重新发送(未确认)到 S2。当然,数据会在重新启动时发送到 S1。但时间框架也很重要。

帮我理解实现机制。感谢您的帮助。

【问题讨论】:

标签: java activemq load-balancing failover


【解决方案1】:

... S1 关闭的地方... 我期待 ActiveMQ 将数据重新发送(未确认)到 S2

这没有发生?当您说 S1 已关闭时,您的意思是它实际上已关闭,还是因为它挂起而无法处理任何消息?

在后一种情况下,您看到的行为是设计使然 - 只要 S1 仍处于连接状态,代理就不会在 S1 的预取缓冲区中释放消息(至少在达到消息到期超时之前)。

在前一种情况下,S1 的队列连接保持活动超时将被命中(在可配置的时间之后),并且 S1 预取中的所有消息都应回滚到代理并可供 S2 处理。

【讨论】:

  • 是后一种情况,挂。得到了我的答案。谢谢。
  • @srikanth - 请评论您的实际解决方案,以帮助其他人解决同样的问题。谢谢!
猜你喜欢
  • 2013-01-16
  • 1970-01-01
  • 2013-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多