【问题标题】:What's the difference among the DeliveryStates for the Vert.x AMQP ClientVert.x AMQP 客户端的 DeliveryStates 有什么区别
【发布时间】:2020-05-27 10:04:12
【问题描述】:

作为 AmqpReceiver,接收到的消息的不同 DeliveryState 之间有什么区别。

运行 ReceiverTest 进行测试,请参阅 https://github.com/vert-x3/vertx-amqp-client/blob/master/src/test/java/io/vertx/amqp/ReceiverTest.java

运行testReceptionWithAcceptedMessages,testReceptionWithRejectedMessages时总是得到相同的结果:测试队列中的所有消息都被删除。

当消息被标记为rejected或released时,消息仍然从MQ服务器中删除是对的吗?在哪里可以找到更多关于此的文档?

Vert.x AMQP 客户端在消费队列时可以做与 RabbitMQ 客户端相同的事情吗?例如,肯定或否定确认、多重确认和重新排队等。见https://www.rabbitmq.com/confirms.html#basics

谢谢。

【问题讨论】:

    标签: rabbitmq client amqp vert.x ack


    【解决方案1】:

    在这些测试中,客户端正在接受和拒绝来自 ActiveMQ Artemis 代理的消息。在测试中的配置下,代理将在接受时丢弃消息,或者在拒绝时对消息进行 DLQ。您可以在自己的情况下以不同的方式配置代理,但为了测试,它不相关。当您通过设置的处置接受、释放、拒绝或修改交付时,您正在与之交谈的代理将根据您使用的代理及其配置而有所不同。

    您可以参考 AMQP 1.0 规范中的 section 3.3section 3.4,了解交付状态如何影响交付可用、获取或存档的定义。

    【讨论】:

    • 也许,我找到了关键点requeue。 RabbitMQ 客户端实现了它,我在 Vert.x AMQP 客户端或 Apache Qpid Proton-J 中没有发现任何相关信息。经过一些测试,message.modified() 似乎做到了这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    • 2022-07-07
    • 2017-09-28
    相关资源
    最近更新 更多