- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们发现消息队列的消费者从字母范围顶部的队列中获取消息的问题。我们有两个应用程序:生产者 和订阅者。我们正在使用 RabbitMQ 3.6.1。
假设消息队列是这样设置的:
我们的第一个应用程序,生产者,每秒将 100 条消息放入每个队列:
我们的第二个应用程序,订阅者,有五个独特的消费者方法,可以处理每个队列中的消息。每个方法都绑定(bind)到它各自的队列。 订阅者 的预取值为 1,这意味着无论队列如何,它一次只能保存一条消息。我们可能会像这样运行多个订阅者实例:
所以情况是这样的:每个队列每秒接收 100 条消息,我们有四个 subscriber 实例使用这些消息,所以每个队列有四个消费者。假设消费者方法每个可以处理 25 msg/sec。
发生的情况是,不是所有队列都被平均消耗,而是按字母顺序排列较高的队列获得优先权。似乎当订阅者准备就绪时,RabbitMQ 查找这个特定就绪 channel 绑定(bind)到的队列列表,并选择第一个有待处理消息的队列。
在我们的情况下,A_QUEUE 将消耗每条消息。 B_QUEUE 在某些竞争条件下可能会消耗一些,但 C_QUEUE/D_QUEUE 尤其是 E_QUEUE 很少会被触及。
如果我们关闭发布者,队列最终会从上到下耗尽。
是否可以配置 RabbitMQ 本身或什至 channel 以使用某种循环分配策略或什至随机策略,以便当 channel 具有大量绑定(bind)队列时,都有待处理的消息,分布均匀吗?
最佳答案
澄清一下:您有一个包含多个消费者的订阅者应用程序,对吗?
我猜您在订阅者应用程序中使用了单个 RabbitMQ 连接。
您是否还为所有消费者重复使用了一个 RabbitMQ channel ?如果是这样,那将是一个问题。请务必为您启动的每个消费者使用一个新 channel 。
关于RabbitMQ 不均匀地向消费者分发消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37720312/
我需要在半径R的圆内生成一个均匀随机点。 我意识到,通过在区间 [0 ... 2π) 中选择均匀随机的角度,并在区间 (0 ... R) 中选择均匀随机的半径,我最终会得到更多的点朝向中心,因为对于两
我想在一个正方形内生成 N 个点(均匀地)。我怎样才能做到这一点? 最佳答案 非常酷的问题,比我想象的要困难得多,但这就是想法。有关于 n 边形的论文,但我只会做正方形。因此,圆的均匀分布是一个常见问
考虑以下示例: import itertools import numpy as np a = np.arange(0,5) b = np.arange(0,3) c = np.arange(0,7)
SQL Server 将一组值分成 5 组,每组的 sum(count) 应该均匀分布。 表仅包含 2 列 rid 和 count。 create table t1(rid int, count in
我有以下简单的 HTML。 A B C 和 CSS: ul { width: 100%; display: flex; flex-direction:
我是一名优秀的程序员,十分优秀!