ActiveMQ生产者创建和不活动期

时间:2012-10-15 09:02:53

标签: activemq producer-consumer

我有一个关于ActiveMQ和制作人的问题。

我应该为每次发送消息创建一个生产者吗?或者一直使用同一个?通过为每次发送创建生产者是否会对性能产生影响?

此外连接在一段时间不活动后会停止,但我不知道它是否与此相关,是否有任何建议?

1 个答案:

答案 0 :(得分:0)

是的,创建生产者会对性能产生很小的影响,特别是如果代理位于另一台机器上(客户需要与代理商交谈以创建生产者)。

在本回答的其余部分中,我假设您使用Java / JMS与AMQ交谈。

如果您有一个非常简单的程序,您当然可以“重新使用”您的生产者,使用“NULL”目的地创建它们,并在发送时设置目的地。

您可以轻松使用PooledConnectionFactory池连接,会话和生产者。我认为包装类会帮助你。

实际上,你可以像这样使用PooledConnectionFactory(伪代码):

 cf = new PooledConnectionFactory(myOriginalConnectionFactory)
 sendMessage(cf)
 sendMessage(cf)
 sendMessage(cf)

 SendMessage(connectionFactory)
   conn = connectionFactory.CreateConnection
   sess = conn.CreateSession
   prod = sess.createProducer
   msg = sess.createMessage
   prod.send(msg)
   prod.close
   sess.close
   conn.close

这意味着您不必担心已关闭/打开的会话,连接等。这是Spring Framework中广泛使用的JmsTemplate的工作方式(当然,使用池化/缓存的资源可以更好地工作) )。

另请参阅this页面了解性能提示和技巧。