【发布时间】:2016-12-02 06:46:50
【问题描述】:
这只是为了澄清 pub/sub + 线程。
我的怀疑是 在正常的发布者/订阅者模式中,订阅者和发布者是在同一线程上运行还是在不同线程中运行?
还是取决于实现?
到目前为止,我想到的是不同的订阅将拥有自己的线程,而在其上运行的发布者是自己的线程?
【问题讨论】:
标签: java .net design-patterns publish-subscribe
这只是为了澄清 pub/sub + 线程。
我的怀疑是 在正常的发布者/订阅者模式中,订阅者和发布者是在同一线程上运行还是在不同线程中运行?
还是取决于实现?
到目前为止,我想到的是不同的订阅将拥有自己的线程,而在其上运行的发布者是自己的线程?
【问题讨论】:
标签: java .net design-patterns publish-subscribe
在正常的发布者/订阅者模式中,订阅者和订阅者 发布者是在同一个线程上运行还是在不同线程上运行?还是取决于实现?
通常,发布者/订阅者在不同的线程中运行。在这里,这些发布者/订阅者线程可能在同一个应用程序中,也可能来自在您的项目之外运行的不同应用程序。例如,您的应用程序可能会发布一些有关产品信息的数据,而其他应用程序可能会订阅该数据并使用它。
您可以通过多种方式实现基于生产者/消费者的应用程序,例如使用Queue 或使用JMS(将生产者和消费者松散地耦合在一起,具有更多功能)等。通常在这些实现中,消息将由从一个线程(使用/不同应用程序)产生消息的发布者发布,而消费者从另一端消费消息。
到目前为止,我想到的是不同的订阅方式 自己的线程,而在其上运行的发布者是自己的线程?
是的,您是对的,除此之外不要假设总是只有一个发布者。在一些现实世界的应用程序中,可能有多个生产者(在不同的线程中运行)发布消息,而多个消费者(在不同的线程中运行)使用这些消息。
【讨论】:
在我看来,发布者-订阅者模式与分布式系统和面向消息传递的系统紧密耦合。这种系统的目标是可扩展的,因此它意味着发布者和订阅者应该在不同的线程上运行。
【讨论】: