多交换队列模型的RabbitMQ使用者设计
我有一个RabbitMQ设置,配置如下多交换队列模型的RabbitMQ使用者设计,rabbitmq,message-queue,rabbitmq-exchange,Rabbitmq,Message Queue,Rabbitmq Exchange,我有一个RabbitMQ设置,配置如下 每个交换都是扇出式的 连接到每个Exchange的多个队列 阻塞连接由消费者创建 单个使用者处理所有回调 问题- 一些有效负载比其他负载需要更长的处理时间,这导致消费者即使在其他队列中有有效负载时也保持空闲 问题- 我应该如何实现消费者以避免长时间等待?我应该吗 是否为每个模块运行单独的使用者?有用户体验吗 我可以配置RabbitMQ来处理这些情况吗?如果是,怎么办 首先,很高兴知道为什么您有多个扇出交换?你真的需要这个吗?扇出exchange将消息发
- 每个交换都是扇出式的
- 连接到每个Exchange的多个队列
由消费者创建阻塞连接
- 单个使用者处理所有回调李>
首先,很高兴知道为什么您有多个扇出交换?你真的需要这个吗?扇出exchange将消息发送到所有队列
首先,你用的是什么编程语言?大多数常见语言,如python、java、c#,都支持为并行进程创建额外的线程 假设您使用以下队列(pseu代码): 首先,设置“prefetch_count=3”允许您的消费者最多有3条消息同时处于非确认状态 在回调方法中,您应该启动一个线程,使用线程化的函数来执行每条消息。在函数方法体的末尾,执行以下操作:
ch.basic_ack(delivery_tag = method.delivery_tag)
因此,最多可以并发处理3条消息,即使其中一个或两个线程运行时间更长,其他线程仍可以处理下一条消息
ch.basic_ack(delivery_tag = method.delivery_tag)