RabbitMQ没有通过循环向消费者发送消息

时间:2017-06-30 14:21:57

标签: ruby-on-rails rabbitmq bunny sneakers

我有一个充当制作人的Ruby应用程序,如下所示:

class PostNotificationService
  class << self
    def call(notification)
      queue = channel.queue('adyen_notifications', auto_delete: false)
      exchanger = channel.default_exchange

      exchanger.publish(notification, routing_key: queue.name)
    end

    private

    def connection
      @connection ||= Bunny.new(AMQP_URL)
      @connection.start
      @connection
    end

    def channel
      @channel ||= connection.create_channel
      @channel.basic_qos 1
      @channel
    end
  end
end

我还有一个消费者应用程序,可以产生2个工人(消费者)

AMQP_URL = ENV['RABBITMQ_URL'] || 'amqp://guest:guest@localhost:5672'
Sneakers.configure  heartbeat: 2,
                    amqp: AMQP_URL,
                    vhost: '/',
                    workers: 2,
                    exchange_type: :direct,
                    timeout_job_after: 1.minute,
                    prefetch: 1

它工作得很好,但我得到两次相同的消息(两个消费者)。我认为默认情况下,rabbitmq会使用循环方式将消息发送给消费者,但即使使用预取选项,我也会收到2条消息。

我错过了什么吗?

0 个答案:

没有答案