【问题标题】:Purpose of declaring an exchange on a RabbitMQ consumer在 RabbitMQ 消费者上声明交换的目的
【发布时间】:2023-03-15 21:35:01
【问题描述】:

我有一个 Java 消费者应用程序,它连接到名为“my_exhange_foo”的 RabbitMQ (3.2.4) 不可删除扇出交换:

Connection connection = connectionFactory.newConnection(consumerPool);
Channel channel = connection.createChannel();
channel.exchangeDeclare("my_exhange_foo", "fanout"); // is this necessary?

String queueName = channel.queueDeclare().getQueue();
channel.queueBind(queueName, "my_exhange_foo", "");

QueueingConsumer consumer = new QueueingConsumer(channel);
channel.basicConsume(queueName, true, consumer);

无论是否声明了交换,客户端消费者应用程序都会接收消息。

我按照本教程中的示例 ReceiveLogsDirect.java https://www.rabbitmq.com/tutorials/tutorial-four-java.html

并阅读api,但无法弄清楚在消费者方面声明交换的目的是什么。如果有人能对此有所了解,我将不胜感激。

【问题讨论】:

    标签: java rabbitmq rabbitmq-exchange


    【解决方案1】:

    在消费者端声明交换的目的是什么?

    它允许在生产者进程启动之前启动消费者进程。没有它,如果消费者首先启动,那么它会出错。在使用生产系统时,首先启动消费者的灵活性很有用,它可以减少由重启系统的固有时间引起的可能问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-10
      • 2017-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-26
      • 1970-01-01
      • 2011-04-15
      相关资源
      最近更新 更多