使用客户端确认模式确认预取消息

时间:2011-08-12 05:13:16

标签: jms activemq

我们面前的情况如下:

  1. 我们有持久订阅者订阅了一个主题。这个持久订阅者是一个由守护进程运行的perl脚本。
  2. perl脚本使用stomp连接到代理。
  3. perl脚本每5分钟唤醒一次,检查主题中的消息并通过预先获取消息批量处理它们。
  4. 订阅者使用客户端确认并仅确认批次的最后一条消息。
  5. 我们正在使用带有kahaDB持久性的AMQ 5.5。
  6. 现在我们看到的是,

    • 即使批量处理邮件并确认最后一条邮件,但机上邮件数量也不会下降。
    • 排队计数,出队计数和派遣计数不匹配。
    • 日记文件未被清理。

    我知道一旦消息的引用丢失或删除(即消息被消费),日志文件将被清除。但它是否必须对我在主题上看到的各种计数属性做任何事情?

    如果客户端崩溃然后在回来后消耗所有消息,我还应该期望机上飞机数量降至0吗?

    如果有任何其他可能导致日志文件留下的原因,请告诉我。

    谢谢

1 个答案:

答案 0 :(得分:0)

实际上我在发送确认后立即断开连接。 在断开连接之前等待ack的收据解决了这个问题。