我有一个生产者 (P) 将项目推入消费者 (C)。C 可能决定在所有物品到达后不立即消费;相反,它可能会异步等待直到队列中有n 个项目或直到某个时间间隔t已经过去,然后消耗队列中的所有项目并重新启动计时器。
每当它推送到 C 的项目确实已被消费时,需要通知 P。这是因为 P 负责在发生故障时恢复(P 将当前状态保存到 DB)。因此,在重启的情况下,P 需要知道它需要再次推送哪些项目,因为它们还没有被消费者确认。
我的第一个想法是让 C 通过回调函数(委托)通知 P:每当一个项目被消费时,P 的回调函数就会被一个消费项目列表调用。
但我想知道是否可能有其他(更好的)方式通知制片人。你怎么认为?
斯特凡诺
更新:感谢您到目前为止的回答。我目前正在研究使用异步方法是否可能是一种优雅的方式来同步发布者和消费者正在发布的项目的状态。