【问题标题】:How to check if message has been delivered earlier in rabbitMq?如何检查消息是否已在 rabbitMq 中较早地传递?
【发布时间】:2020-05-19 07:18:42
【问题描述】:

我有一个正在运行的 rabitmq 服务器,它有一个队列。我在队列中发布了一些数据。现在,如果当时处理该消息有一些错误,那么我将其拒绝为ch.reject(msg,true)。所以消息再次被消费它再次是错误然后再次拒绝它&消息将再次被消费。现在我想知道该消息已经发送,因为我拒绝了它。

const queueresponse = await self.filterData(JSON.parse(msg.content.toString()));
                            if (queueresponse) {
                                ch.ack(msg);
                                console.log("queue received true")
                            } else {
                                ch.reject(msg, true);
                                console.log("queue received false")
                            }

有没有办法知道消费的消息是否因为被拒绝而早先发送了?

【问题讨论】:

    标签: javascript node.js rabbitmq queue


    【解决方案1】:

    Rabbitmq 中没有这样的功能来查看消息之前是否被拒绝。 但是,您可以使用 JSON 中的一些额外数据将其重新排队,而不是拒绝该消息,例如

    {retry_count = 1}
    

    当你下次收到这样的消息时,你可以阅读它并知道它以前被重新排队。

    【讨论】:

    • 我试过了,但没有这种方法可以在当前消息中附加数据。我试过了,但它总是返回上一条消息。
    • 您必须确认当前消息并发布新消息。
    猜你喜欢
    • 2015-03-13
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    相关资源
    最近更新 更多