我有一个充当生产者的 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 条消息。
我错过了什么吗?