我想知道我是否可以在MessageConsumer上注册一个监听器然后调用receive()方法。我知道这听起来并不像是一个实际的场景,但知道它会很有趣。 JMS规范是否允许这样的东西?
我知道Session是一个单线程上下文,它的监听器对消息的调度将是顺序的,但我可以想象实际处理我的注册监听器的线程将会这样做,它必须是一些线程JMS提供程序创建的。这意味着创建消息使用者的线程是独立的,并且可以同时侦听消息。我刚刚说的是对的吗?在那种情况下会发生什么?
答案 0 :(得分:1)
您对线程问题的分析正是我的想法所在。由于2个线程与一个会话交互,我认为你遇到了麻烦。
好的,我在JMS 1.1规范中查了一下。当我读到它时,有两位说话。
答案 1 :(得分:1)
据我所知,JMS规范中没有描述您的场景。所以留给JMS实现。例如,在IBM MQ的情况下,在附加消息侦听器之后的接收调用将抛出带有MQRC_HCONN_ASYNC_ACTIVE
返回码的异常。