【发布时间】:2016-03-01 06:02:44
【问题描述】:
我是 Java 新手,正在从事一个使用多个(不同)主题并将其发送到另一台服务器的项目。我想知道处理多个主题的最佳方式是什么。
据我了解,每个消费者都与一个主题相关联,因此如果我必须使用多个主题,我将需要一个消费者来处理每个不同的主题。由于消费者进行了阻塞调用,我需要为每个消费者调用一个线程来并行使用这些主题。
如果我想进一步提高吞吐量,每个消费者(附加到主题)有一个老板线程并允许每个老板线程设置工作线程以相应地提高性能是一种好习惯吗?
请告知这是否是一种好的做法,如果不是,还有哪些其他替代选择?是否有任何众所周知的设计模式来处理这个问题
为什么我选择了消费者模型而不是侦听器模型?
我还有一个约束,即消费者收到消息后,需要将消息发送到另一台接收服务器。如果接收服务器关闭(在新版本推送期间),那么我必须暂停消费消息,直到接收服务器启动。在这种情况下,拥有消息监听器将无济于事,因为当接收服务器关闭时我将无法暂停监听器。我这样说是对的,还是有办法暂停侦听器并停止消费消息,直到接收服务器启动?
【问题讨论】: