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