要解决的问题:防止客户饿死其他客户。
我计划让每个客户都有自己的队列,然后让一个消费者从所有这些队列中消费。就我而言,可能有数百名客户,但排队很便宜。具有合理的低预取计数默认代理行为(随机选择从哪个队列弹出)应该会产生令人满意的结果。
这种策略的问题是当新客户出现时。我可以懒惰地创建队列并将其绑定到Publishermsg.in
中的交换。但是如何让消费者从这个新队列中消费呢?customer.xxx
这几乎是主题模式,但不是真的,因为我需要每个客户端的缓冲区。优先级也不能解决这个问题,这会破坏每个客户的消息订单。有没有一种基于模式的消费方式?就像绑定一样,例如。customer.*
.
轮询管理 API是一种选择,但会延迟新客户的第一条消息的处理,直到消费者轮询为止。拥有一个单独的发布/订阅通道用于消费者可以采取行动的元数据new customer.003
将减少延迟(并避免轮询 API),但会使发布者更加复杂。
我觉得那里有一个很好的解决方案,我只是还没有找到它。感谢您的反馈!