这是为了弄清楚酒吧/潜艇+线程。
我怀疑我是否使用了正常的publisher /订户模式,订阅者和publisher都是在同一个线程上运行还是在不同的线程中运行?
还是取决于实现?
到目前为止,我想要的是不同的订阅,它是自己的线程,而publisher运行的是自己的线程?
发布于 2016-12-02 00:13:31
在正常的发布服务器/订阅服务器模式中,订阅服务器和发布服务器都运行在同一个线程上还是在不同的线程中?还是取决于实现?
通常,发布服务器/订阅服务器在不同的线程中运行。在这里,这些发行者/订阅者线程可以在同一个应用程序中,也可以来自在项目外部运行的不同的应用程序。例如,您的应用程序可能发布一些有关产品信息的数据,而另一个应用程序可能订阅并使用该数据。
有几种方法可以实现基于生产者/消费者的应用程序,如使用 队列 或使用 JMS (后者将生产者和消费者都与更多的功能松散结合)等等。通常,在这些实现中,消息将由来自一个线程(使用/不同应用程序)生成消息的发布者发布,而使用者则使用来自另一端的消息。
到目前为止,我想要的是不同的订阅,它是自己的线程,而publisher运行的是自己的线程?
是的,你是对的,并且加上这一点,不要假设总是只有一个出版商。在一些实际应用程序中,可能有几个生产者(在不同线程中运行)发布消息,还有几个使用者(运行在不同线程中)使用这些消息。
发布于 2016-12-02 00:00:02
在我看来,publisher-订阅模式与分布式系统和面向消息的系统紧密耦合。这样一个系统的目的是具有可伸缩性,因此它意味着发行者和订阅者应该在不同的线程上运行。
https://stackoverflow.com/questions/40926380
复制