保持JMS连接/会话/消费者总是打开一个坏习惯吗?
代码草案示例:
// app startup code
ConnectionFactory cf = (ConnectionFactory)jndiContext.lookup(CF_JNDI_NAME);
Connection connection = cf.createConnection(user,pass);
Session session = connection.createSession(true,Session.TRANSACTIONAL);
MessageConsumer consumer = session.createConsumer(new Queue(queueName));
consumer.setMessageListener(new MyListener());
connection.start();
connection.setExceptionListener(new MyExceptionHandler()); // handle connection error
// ... Message are processed on MyListener asynchronously ...
// app shutdown code
consumer.close();
session.close();
connection.close();
Run Code Online (Sandbox Code Playgroud)
有什么建议可以改善这种JMS使用模式吗?
保持连接/会话/生产者/消费者长时间不打开的选择应该基于生产者/消费者发送/接收消息的频率.
如果生产者发送或消费者经常收到消息,那么连接/会话/生产者/消费者应该保持打开状态.另一方面,如果消息发送/接收不频繁,那么保持这些JMS对象打开将消耗系统资源(如套接字)是不好的.
| 归档时间: |
|
| 查看次数: |
13269 次 |
| 最近记录: |