我有 2 个程序 A、B。如果 A 完成,我希望 B 知道并开始运行,使用来自 A 结果的数据。
A 是一个 .NET Web 应用程序。我认为这并不是一直都在记忆中,对吧?只有在浏览器请求时才活着,对吧?
之前,A 和 B 是同一个程序的 2 个函数。但是 B 程序有时会因为业务原因而失败。而且即使B没有失败,也很费时间,让客户等待太久,不开心。所以我把B分开了。客户使用 A 顺利且满意。B 在后台做工作人员。
我目前的设计是:当 A 完成时,A 将数据保存到数据库中。B是一个windows服务。它每 5 分钟检查一次数据库,并在找到新作业时开始运行。A、B不认识。
老板问为什么闲置5分钟?我回答是因为这是实现我们某些业务的最简单方法。我没有设计太多。
所以我去阅读材料,发现这Observer Pattern
似乎是我想要的。看了几遍,觉得Observer Pattern
只能应用到同一个程序中的类,类和对象都在内存中。
我不确定我的问题是:可以GOF Design Patterns
应用于不同的程序吗?
或者:像 RabbitMQ 这样的东西是如何实现这种实时处理的需求的?
我无法想象将 5 分钟的检查间隔设置为非常小的时间段。这对cpu来说是很大的负担。
编辑:我已经对Observer
and进行了这个解释Publish/Subscribe
,我认为这对那些从搜索中看到这个线程的人很有用。
http://addyosmani.com/resources/essentialjsdesignpatterns/book/#observerpatternjavascript
观察者模式和发布/订阅模式的区别
观察者模式要求希望接收主题通知的观察者(或对象)必须将此兴趣订阅到触发事件的对象(主题)。
然而,发布/订阅模式使用主题/事件通道,该通道位于希望接收通知的对象(订阅者)和触发事件的对象(发布者)之间。此事件系统允许代码定义应用程序特定事件,这些事件可以传递包含订阅者所需值的自定义参数。这里的想法是避免订阅者和发布者之间的依赖关系。
这与观察者模式不同,因为它允许任何订阅者实现适当的事件处理程序来注册和接收发布者广播的主题通知。