我正在研究一个要求,即一个进程(比如生产者)需要向可变数量的进程(比如消费者)发送单向消息。
发布-订阅模型似乎对此很好,因为消费者将订阅来自生产者的消息。我尝试使用ZeroMQ来实现这一点。
但是,我有一些问题:
消费者必须不断地轮询消息。当有新消息时,我会通知消费者。
生产者队列有可能被填满。我希望生产者根据某些条件从队列中删除消息(比如删除超过 5 秒的消息,或者删除已阅读 5 次的消息)。
由于消费者正在轮询并且消息没有从队列中删除,因此消费者会看到重复的消息,直到有新消息进来。我希望每条新消息只通知消费者一次。
我知道我可能使用了错误的模型(发布订阅可能不合适)。我曾考虑过使用 request-reply,但这不起作用,因为生产者不想跟踪消费者的数量。
任何人都可以提出一个好的选择吗?