我读了this ActiveMQ documentation并且对于为ActiveMQ创建/使用连接和会话对象提出了疑问,现在如果我创建了一个我在几个使用者中使用的连接对象,并且每个使用者具有不同的会话对象,那么就会有任何性能与创建一个连接和一个会话对象时的差异相比?我不这么认为。 (不要从多线程问题角度考虑)
我认为如果我有一个连接对象,那么我是否有一个会话对象或所有消费者的多个会话对象并不重要,因为通信将是顺序的,因为我在进行通信时不能使用相同的连接对象对于任何消费者。
我认为更好的方法是为每个消费者创建一个连接对象池和单独的会话对象,就像会有性能提升一样?
我认为这也是正确的,就像在数据库通信中发生的情况一样。
答案 0 :(得分:0)
这取决于您拥有多少消费者,消息,内存,CPU。
JMS合同是一个线程一次只使用一个会话 - 如果您使用的是消费者,则意味着如果使用相同的会话,只有1个消费者可以一次接收消息
每个消费者之后必须有一个会话,如果你有许多消费者,例如100,最好使用PooledConnectionFactory来修复连接数限制到非开销资源。
如果您有10个消费者,则可以使用1个连接而不会降低性能。
您可以进行一些测试以将结果与资源进行比较。