当前位置: 首页 > 知识库问答 >
问题:

RabbitMQ包:一个队列和多个工作者

景令秋
2023-03-14

我目前正在尝试使用RabbitMQ(具有出色的RabbitMQBundle)来处理大量的异步工作。

目标是让一个队列发布相同类型的消息,并让多个服务器上的X个工作者在同一时间内查看消息。

每个工人都要偷看一条消息,完成工作,然后偷看另一条消息,等等。

这里是我的conf:

old_sound_rabbit_mq:
connections:
    default:
        host:     'localhost'
        port:     5672
        user:     'myuser'
        password: 'mypassword'
        vhost:    '/'
        lazy:     false
producers:
    generate_report:
        connection:       default
        exchange_options: { name: 'gen_report', type: fanout }
consumers:
    generate_report:
        connection:       default
        exchange_options: { name: 'gen_report', type: fanout }
        queue_options:    { name: 'gen_report' }
        callback:         generator.report.consumer

在我的consumer中,我有一个日志文件中的条目和120秒的睡眠。

我启动了php app/console rabbitmq:consumer generate_report类似10次,但是当我查看日志文件时,我只有每条120的消息,目标是有10条!

我还尝试将我的队列设置为topic或direct,结果相同。

我不明白我做错了什么:'(

提前致谢

共有1个答案

丘畅
2023-03-14

我也经历过同样的问题。您可以做的是将获取的消息数设置为1。

$channel->basic_qos(null,1,null);

http://www.rabbitmq.com/tutorials/tutorial-two-php.html,参见公平调度部分。

 类似资料:
  • 我是新手RabbitMQ java客户端。我的问题:我创建了10个consumer并将它们添加到队列中。每个消费者使用10秒来处理我的流程。我检查了Rabbit的页面,我看到我的队列有4000条消息没有发送到客户端。我检查了日志客户端,结果是为一个消费者获取一条消息,10秒后,我为一个消费者获取一条消息,依此类推…我想要得到10个消息为所有消费者在当时(10个消息-10消费者过程在当时)请帮助我,

  • 到目前为止,对于RabbitMQ中的一个队列,我使用了一个通道,但现在我动态创建了多个队列,所以我必须为每个队列创建一个新通道,还是一个通道可以从不同的队列接收/发送消息?

  • 是否可以使用topic将消息发送到队列,并有2个消费者接收和处理相同的消息?目前,我已经创建了两个消费者,他们正在观察与一个exchage主题绑定的队列,但是第一个消费者使用了该消息并删除了该队列,第二个消费者没有接收到该消息。

  • 我刚刚开始使用RabbitMQ和AMQP。 我有一个消息队列 我有多个消费者,我想用相同的消息做不同的事情。 RabbitMQ的大部分文档似乎都集中在循环(round-robin)上,即单个消息由单个消费者使用,负载在每个消费者之间分散。这的确是我目击的行为。 例如:生产者只有一个队列,每2秒发送一次消息: 这里有一个消费者: 如果我启动消费者两次,我可以看到每个消费者都在以循环行为消费交替消息。

  • 问题内容: 我一般只是开始使用RabbitMQ和AMQP。 我有一条消息队列 我有多个消费者,我想用 同一条消息 做不同的事情。 RabbitMQ的大多数文档似乎都集中在循环上,即单个消息由单个使用者使用,而负载则分散在每个使用者之间。我确实是这种行为。 例如:生产者只有一个队列,每2秒发送一次消息: 这是一个消费者: 如果我启动使用者两次,则 可以看到每个使用者都以循环方式使用替代消息。 例如,

  • 我目前正在学习一些关于RabbitMQ+SpringAMQ的知识,我试图使我的SimpleMessageListenerContainer能够读取传递到我的两个队列的消息,但只有一个队列在接收消息。如果你有任何关于代码的进一步提示,或者如果有任何方法可以更好地做它,请让我知道这将是很好的。 编辑:问题是代码没有将消息发送给两个队列,只发送给一个队列。 基本上我是从两个队列接收的,一个在数据库中插入