【问题标题】:RabbitMQ work Queue : Starting Consumer after Sender [Java]RabbitMQ 工作队列:在发送者之后启动消费者 [Java]
【发布时间】:2013-09-01 18:19:18
【问题描述】:

我对使用 RabbitMQ 作为消息队列协议非常陌生。我已经编写了 RabbitMQ 教程中给出的发送方和消费者工作队列的代码。

[链接:http://www.rabbitmq.com/tutorials/tutorial-two-java.html]

当我们在发送者之前启动消费者时,上述事情可以正常工作。 但是如果我们在运行发送方之后启动消费者,就会出现问题。 那些启动的消费者都不会消费任何消息 运行发件人后。 看了下 RabbitMQ 的架构和 AMQP 相关的东西,好像挺难的。

1] 有没有可能,我们在发送者之后启动消费者,而消费者在发送者收到队列中的消息之后启动?

2] 如果是。那么这件事怎么做。有什么技术可以做同样的事情吗?

【问题讨论】:

    标签: java rabbitmq amqp


    【解决方案1】:

    是的,这是可能的。确保在声明队列时将自动删除设置为 false。如果 auto-delete 设置为 true,则一旦最后一个消费者取消订阅,则队列将被删除,并且当您的发件人向其推送消息时,它们将丢失。如果 auto-delete 设置为 false,则在您的消费者取消订阅后队列将继续存在,并且您的发件人将能够将消息推送到队列而不会丢失。

    http://www.rabbitmq.com/tutorials/amqp-concepts.html#queues找到更多关于队列的信息

    【讨论】:

      【解决方案2】:

      我想在第一种情况下(首先启动消费者),消费者正确地创建/注册了它想要在 RabbitMQ 服务器上监听的队列。所以当发件人发送时它能够接收它。

      在第二种情况下,可能发生的事情是发件人试图发送到一个不存在/未创建并进入默认/死信的队列。

      我建议你可以打开 RabbitMQ 管理控制台,看看队列是否创建正确。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-07
        • 1970-01-01
        • 1970-01-01
        • 2016-06-19
        相关资源
        最近更新 更多