gpt4 book ai didi

java - 发送消息时,Swing 应用程序中的 Jms 最佳实践?

转载 作者:行者123 更新时间:2023-12-04 05:12:08 26 4
gpt4 key购买 nike

在我的 java swing 应用程序中,我实现了一个与 jms 服务器通信的 jms 客户端。这工作正常。

目前,当我的应用程序启动时,我创建了一个连接和一个 session :

ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory
connection = connectionFactory.createConnection();
connection.start();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

接下来,当我需要向主题发送消息时,我创建了一个主题(将消息发送到)、一个临时队列(接收回复)、一个生产者(发送消息)和一个消费者(实际阅读回复) :
Destination destination = session.createTopic ...
MessageProducer producer = session.createProducer ...
Destination tempDest = session.createTemporaryQueue();
MessageConsumer responseConsumer = session.createConsumer(tempDest);
producer.send(msg);

我想知道在这种情况下最好的做法是什么?

当我需要发送消息时,我可以简单地创建所有内容,或者最好将 Destination、MessageProducer、MessageConsumer 保存在某处并重新使用它。当我决定重新使用这些对象时,有什么特别需要注意的地方吗?

最佳答案

您应该重用您能够重用的对象。

该连接可能会被整个应用程序重用,因为它是线程安全的。

session 对象不是线程安全的,在这种情况下,您应该坚持每个线程的 session 。

你可以作弊。使用 org.apache.activemq.pool.PooledConnectionFactory它将设置一个 session 池、连接池和生产者池。

你还是要写connection.createSession(..session.close()但这只是从池中获取和释放对象。

如果您对并发进行细粒度控制,那么实际重用对象可能会更容易,但这种情况很少见。

关于java - 发送消息时,Swing 应用程序中的 Jms 最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14773852/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com