0

我有一个充当生产者的 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 条消息。

我错过了什么吗?

4

0 回答 0