发布者和订阅者是否在同一线程上?

3

我希望能够对发布/订阅+线程模型进行澄清。

我的疑问是,在普通的发布者/订阅者模式中,订阅者和发布者是否在同一线程上运行,还是在不同的线程上运行?

或者这取决于实现方式?

目前我所想的是,不同的订阅应该有自己的线程,而发布者则在其自己的线程上运行?

2个回答

1
据我看来,发布-订阅模式与分布式系统和面向消息的系统紧密耦合。这些系统的目标是可伸缩的,因此意味着发布者和订阅者应该在不同的线程上运行。

1
在正常的发布/订阅模式中,订阅者和发布者通常运行在不同的线程上。这里,这些发布者/订阅者线程可以在同一个应用程序内部运行,也可以来自于运行在您项目外部的不同应用程序。例如,您的应用程序可能会发布有关产品信息的某些数据,而其他应用程序可能会订阅该数据并使用它。
有几种方法可以实现基于生产者/消费者的应用程序,例如使用队列或使用JMS(它将生产者和消费者松散耦合,并具有更多功能),等等。通常,在这些实现中,发布者从一个线程(带/不带不同应用程序)生成消息,而消费者从另一端消耗消息。
“我想到的是,不同的订阅将拥有自己的线程,而发布者则在其自己的线程上运行?”
是的,你说得对,此外不要假设总会只有一个发布者。在一些实际应用中,可能会有多个生产者(在不同线程中运行)发布消息,以及多个消费者(在不同线程中运行)消费这些消息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接