gpt4 book ai didi

java - 如何暂时禁用消息监听器

转载 作者:太空狗 更新时间:2023-10-29 22:46:13 24 4
gpt4 key购买 nike

暂时禁用消息监听器的好方法是什么?我要解决的问题是:

  • 消息监听器接收到 JMS 消息
  • 我在尝试处理消息时遇到错误。
  • 我等待我的系统再次准备就绪以便能够处理消息。
  • 在我的系统准备就绪之前,我不想再收到任何消息,所以...
  • ...我想禁用消息监听器。
  • 我的系统已准备好再次处理。
  • 处理失败的消息,并确认 JMS 消息。
  • 再次启用消息监听器。

现在,我正在使用 Sun App Server。我通过在 MessageConsumer 中将其设置为 null 来禁用消息监听器,并使用 setMessageListener(myOldMessageListener) 再次启用它,但在此之后我没有收到任何消息。

最佳答案

如果您在系统准备好再次处理消息之前不从 onMessage() 监听器方法返回怎么办?这将阻止 JMS 向该消费者传递另一条消息。

这相当于在同步情况下不调用 receive() 的异步。

对于给定的 JMS session ,没有多线程,因此消息管道会被暂停,直到 onMessage() 方法返回。

我不熟悉动态调用 setMessageListener() 的含义。 javadoc 说 there's undefined behavior如果调用“当现有监听器或同步消费者正在使用消息时”。如果您从 onMessage() 中调用,听起来您遇到了未定义的情况。

start/stop连接级别的方法,如果这对您来说不是太粗略的话。

关于java - 如何暂时禁用消息监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/625725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com