【发布时间】:2010-08-30 19:46:04
【问题描述】:
我想找出其他方法来执行异步观察者模式而不使用消息队列。想法和例子大多受到欢迎。 :-)(将其视为头脑风暴会议)。
PS语言偏好由您决定。
【问题讨论】:
标签: design-patterns language-agnostic asynchronous observer-pattern
我想找出其他方法来执行异步观察者模式而不使用消息队列。想法和例子大多受到欢迎。 :-)(将其视为头脑风暴会议)。
PS语言偏好由您决定。
【问题讨论】:
标签: design-patterns language-agnostic asynchronous observer-pattern
在Java 中,您可以将通知任务提交给Executor,该Executor 管理一个线程组,这些线程组都只负责处理可观察的事件。您仍然有效地拥有一个队列,但它不是传统意义上的“消息队列”,而是一个通知任务队列。
【讨论】:
最明显和最简单的方法是在主题中为每个注册到主题的观察者启动一个新线程,并让这些线程运行每个观察者的“ update()" 方法。
更复杂的方法是使用中间件类作为总线让主体“发送事件”给它。这个中间件类将使用多个线程来调用所有“注册的”观察者,但这开始偏离经典的观察者模式。无论如何,使用这种方法可以防止主题处理线程。
这种方法可以非常灵活地扩展到不同的“事件类型”,许多主题和观察者注册到中间件类以处理任意类型的事件。
【讨论】:
在 .NET 中,您可以使用 Reactive Framework.
【讨论】: