来自 javadocSession http://java.sun.com/javaee/6/docs/api/javax/jms/Session.html它指出:
Session 对象是用于生成和使用消息的单线程上下文。
所以我明白你不应该使用两个不同线程的 Session 对象同时。我不清楚的是,您是否可以从与它创建的线程不同的线程中使用 Session 对象(或子对象,例如队列)。
在我正在处理的情况下,我正在考虑将我的 Session 对象放入可用会话池中,任何线程都可以从该池中借用、使用并在完成后返回到池中。
这是犹太洁食吗?
(顺便说一句,使用 ActiveMQ,如果这会影响答案的话。)
我认为第 4.4 节的脚注JMS 1.1 规范 http://download.oracle.com/otndocs/jcp/7195-jms-1.1-fr-spec-oth-JSpec/揭示了一些线索:
对于可以使用 Session 对象或其创建的线程的数量没有限制。限制是 Session 的资源不应该被多个线程同时使用。由用户来确保满足此并发限制。最简单的方法是使用一个线程。如果是异步交付,则使用一个线程在停止模式下进行设置,然后启动异步交付。在更复杂的情况下,用户必须提供显式同步。
根据我对规范的阅读,只要您正确管理并发性,您想要做的事情就可以。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)