繁体   English   中英

有关JMS receive()/ MessageListener优先级的问题

[英]question on JMS receive()/MessageListener precedence

如果我为MessageConsumer设置了MessageListener对象,然后在该使用者上调用receive() ,将会发生什么? 提供者将消息提供给receive() ,还是在MessageListener对象处理消息时继续阻止消息?

您将得到一个例外,因为会话必须处于异步或同步模式。 从JMS规范的4.4.6开始

会话的单控制线程限制的结果是,带有消息侦听器的会话也不能用于同步接收消息。 会话要么专用于用于传递给消息侦听器的控制线程,要么专用于由客户端代码启动的控制线程。 尝试在同一会话中将两者合并是错误的。

我很难想象这样做的意义。

假设您的receive()没有优先级。 然后大概没有效果。

假设您的receive()确实具有优先权。 收到消息后您希望发生什么? 大概在您再次致电接收之前,消息消费者将接收消息? 在这种情况下,系统的行为实际上是一个巨大的竞争条件,消息的确切到达时间会导致不同的行为。

您必须能够做得更好。 有一个“自适应” MessageConsumer,您也许可以控制其行为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM