我是JMS的新手,目前正在开发一个在Oreilly的“Java消息服务”中解释的简单聊天应用程序。我在ActiveMQ中配置了一个TopicConnectionFactory,它接收来自TopicPublishers的聊天消息并将其发送给TopicSubscribers。
我的问题是'为什么我们需要在任何JMS应用程序中创建多个TopicConnectionFactory'?由于Connectionfactory实例不与主题/队列绑定,为什么我们不能使用ConnectionFactory的一个实例来创建与应用程序中配置的所有主题(或队列)的连接?
答案 0 :(得分:2)
从技术上讲,你是对的。您可以只使用一个ConnectionFactory。
然而,根据您的要求使用多个ConnectionFactories是一个更好的设计,因此流量将均匀分布,并且您不会耗尽连接。
因此,如果您了解可能存在问题的JMS客户端应用程序(逻辑不允许打开/关闭正确的连接处理),您可以将其隔离以使用自己的连接工厂。
此外,某些连接工厂允许同时使用10个默认活动连接池(具体取决于实施/设置),如果您需要更多,可以使用多个连接工厂。
答案 1 :(得分:1)
我在ActiveMQ中配置了一个TopicConnectionFactory,它接收来自TopicPublishers的聊天消息并将其发送给TopicSubscribers。
非常暧昧的陈述。 TopicConnectionFactory
不会收到或发送任何消息。它只是用于创建Connection
的管理对象之一,后者又创建了Session
,后者又创建了发布和订阅消息的发布者和订阅者。
为什么我们不能使用ConnectionFactory的一个实例来创建与应用程序中配置的所有主题(或队列)的连接?
你绝对可以。没有人阻止你这样做。
根据规格
连接工厂对象封装了一组连接配置 已由管理员定义的参数。客户端使用它 与JMS提供程序建立连接。
因此,除非您有不同的配置要求,否则可以使用相同的ConnectionFactory
创建多个Connections。是的,正如otc上面提到的,连接数是配置参数之一。