RabbitMQ-DefaultConsumer内部通道

时间:2018-11-20 12:59:38

标签: java rabbitmq consumer

给出以下代码:

product[1].selected

如果channl1由于某种原因断开连接,这将导致消息不被使用(?):

  1. 同一消费者实例 public void doSomething(Channel channel1){ DefaultConsumer consumer1 = new DefaultConsumer(channel1). channel1.basicConsume("Queue1Name",..., "Consumer1Tag", consumer1) } 是否可以某种方式用于其他渠道,还是需要新实例和新渠道?
  2. 重新定义Queue1Name是否会知道有任何更改?即-
    (consumer1)

消费者人数是多少?

这个问题的原因是我有一个后台线程在运行,并偶尔检查与RabbitMQ的连接。我检查通道和连接是否打开,如果它们没有打开,请重置它们。我想在Queue1上保留一个使用者,并且当我发现它的通道关闭时仍然能够处理它。

1 个答案:

答案 0 :(得分:0)

如果channel1断开连接,则不会消耗其消息,这是正确的。他们将保留在队列中。

  1. 是的,您可以重新连接到相同的队列,但是必须先处理留下的消息,然后才能接收新消息。
  2. 我认为您需要先删除队列,然后才能使用相同的名称创建一个新队列(我不确定100%确定)。重新连接后,使用者计数应为1。但是,如果您这样做,则留在队列中的所有消息都将丢失。

您应该真正在自己的应用程序中尝试一下并观察行为。