一旦有帧,ActiveMQ 就会阻止新订阅者获取帧

ActiveMQ prebvents new subscribers from getting frames, once there are frames

我已经尝试使用多种库和语言(php5|php7|Stomp 扩展|ZF1 Stomp| Python2.7 Stomp 包)。
我发现,如果 queue 有一个订阅者,并且它开始从 queue 获取消息(帧),那段时间任何新订阅者都不会收到任何消息.

我的问题:
有没有办法为 queue 创建一个新订阅者,其中当前有消息 + 一个现有订阅者,并且新订阅者将收到这些消息。
我不发送独家订阅者 headers.
如果在收到消息之前我有两个订阅者,那么他们都会参与。

您很可能 运行 遇到预取问题,其中第一个客户端已预取所有消息并在其中搅动,而第二个客户端收到 none 结果。要解决这个问题,您应该使用 ActiveMQ STOMP guide 中给出的值为客户端配置一个小的预取值,例如 1。客户端需要添加 header activemq.prefetchSize:1 之类的。

您还可以将客户端订阅设置为使用客户端确认模式,这将允许您控制消息何时被视为已处理并防止代理发送更多消息。