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