【问题标题】:How long is message locked for specified subscriber in ActiveMQ using STOMP?使用 STOMP 为 ActiveMQ 中的指定订阅者锁定消息多长时间?
【发布时间】:2017-04-23 19:25:33
【问题描述】:

我想从 ActiveMQ 中读取多个消费者的消息,而不需要重复读取。

如果消息完全被锁定,订阅后消息会被锁定多长时间?

直到断开连接或超时?

我正在使用 ActiveMQ 但不了解协议。

【问题讨论】:

    标签: activemq stomp


    【解决方案1】:

    此消息传递功能(通常存在于所有代理和协议中)通常称为“确认”或“确认”。 STOMP 默认为“auto”,即客户端收到消息时,broker 自动将其标记为已送达。

    还有其他 ack 模式允许开发人员更好地控制何时返回 ack - 例如,如果您想等到数据库插入成功完成。相反,客户端可以回滚消息或 NACK 消息,这会指示代理该客户端拒绝接收消息。

    STOMP 中还提供完整的事务支持。

    STOMP API 示例的详细信息和此处的规范:

    踩踏规格参考:https://stomp.github.io/stomp-specification-1.2.html#SUBSCRIBE_ack_Header

    【讨论】:

    • 使用 STOMP Auto ack,broker 实际上将消息标记为 ack'd on dispatch,没有来自客户端的返回流量以在该模式下确认消息。
    • 我们不要谈论自动模式,它不使用任何锁定,只是发送消息而不关心它们是否处理。这个主题与问题无关。更重要的是何时需要客户个人确认。
    • 已编辑以阐明 STOMP 中的自动确认行为与 JMS h/t @TimBish 不同
    • @Chameleon 你能接受答案吗?谢谢
    • 当然 - 需要检查是否有用。
    猜你喜欢
    • 2013-01-16
    • 2017-09-13
    • 2017-01-28
    • 1970-01-01
    • 2017-01-24
    • 2011-07-15
    • 1970-01-01
    • 2016-06-08
    • 2020-12-17
    相关资源
    最近更新 更多