[英]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.