在RabbitMQ中丢失队列内容

时间:2015-02-05 00:25:59

标签: java scala rabbitmq

我正在使用RabbitMQ在主服务器和多个工作节点之间进行通信。

主人解决问题,在队列中播种一个值。工作人员读取队列,做东西,并且通常为其他工作人员将更多工作项写入同一队列。

跑1个ea。主人/工人,我让事情运行一点然后关闭工人。我的期望是RabbitMQ中的队列大小/内容将在工作人员停止时保持不变(工作人员是唯一的消费者)。

不幸的是,我发现在工作人员终止(连接/频道关闭)后不久我丢失了队列的内容。在典型的运行中,当我关闭我唯一的工人/消费者时,我将在队列中有100多个项目。 片刻之后我的队列长度为0.任何人都知道为什么?此时我的主人还活着并且在队列中什么都不做。

(请注意,rabbitmq-server没有发生任何变化......它仍在运行。)

我的用法:

In Master:

    Declared:
        channel.queueDeclare("my_q", false, false, false, null)

    Written:
        channel.basicPublish("","my_q", null, "content".getBytes())



In Worker:

    Declared:
        channel.queueDeclare("my_q", false, false, false, null)
        channel.basicQos(1)
        val consumer = new QueueingConsumer(channel)
        channel.basicConsume("my_q", false, consumer)

    Read:
        val delivery = consumer.nextDelivery()
        channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false)

    Write:
        channel.basicPublish("", "my_q", null, "content".getBytes())

0 个答案:

没有答案
相关问题