当前位置: 首页 > 知识库问答 >
问题:

Spring JMS DefaultMessageListenerContainer轮询频率

法烨华
2023-03-14

我使用DefaultMessageListenerContainer来消费ActiveMQ队列中的消息,如下所示。在这种实现中,是否有轮询机制,侦听器是否每隔1秒左右轮询队列以查看是否有新消息,或者是否在队列中有新消息时调用onMessage方法?如果使用轮询,我们如何增加或减少轮询频率(时间)。

DefaultMessageListenerContainer container = new DefaultMessageListenerContainer();
container.setMessageListener(new MessageJmsListener ());

public class MessageJmsListener implements MessageListener {
    
  @Override
    public void onMessage(Message message) {
        if (message instanceof TextMessage) {
            try {
                //process the message and create record in Data Base                
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    }     
}

共有1个答案

卢普松
2023-03-14

容器轮询JMS客户端,但代理将消息推送到客户端。

因此,不,容器不会直接轮询队列。

如果队列中没有消息,则容器将在接收超时后超时,并立即重新轮询,并在代理发送下一条消息后立即获取该消息。

预取决定了代理向消费者发送了多少消息;因此这可能会影响性能(但我认为,在最近的ActiveMQ版本中,默认情况下是1000)。

将预取设置为1将使您的传递速度最慢。

如果你想放慢速度,你可以添加一个线程。sleep()在您的侦听器中。

 类似资料:
  • 有没有办法设置(即减少)套接字的轮询频率。使用长轮询传输时的IO (v4.4)?在服务器上还是在客户机上? 文档中描述了长轮询传输,通常在无法建立 WebSocket 连接时充当回退(但可以显式设置): 套接字之间的双向通道。IO服务器(Node.js)和套接字。IO客户端(browser、Node.js或其他编程语言)尽可能使用WebSocket连接建立,并将使用HTTP长轮询作为后备。

  • 问题内容: 故事: 在Javaselenium语言绑定中,有一个class,它可以严格控制如何检查期望的条件: 每个FluentWait实例都定义了等待条件的最长时间,以及检查条件的频率。此外,用户可以配置等待以在等待时忽略特定类型的异常,例如在页面上搜索元素时的NoSuchElementExceptions。 换句话说,可以更改应用预期条件检查的轮询间隔,默认情况下为500毫秒。另外,可以设置要

  • 问题内容: 我最近在StackOverflow上问了一个有关我的功能的问题,人们建议我使用Ajax Long Polling。我花了几天的时间研究该主题,并尝试编写基本的长轮询代码,但是这些代码都没有起作用,而且我什么也做不了。 这是我的基本功能: 有人能够告诉我如何将其转变为基本的长轮询功能,或者甚至直接指向我需要到达的路径。很感谢任何形式的帮助。谢谢! 问题答案: 通常(即,当不使用长时间轮询

  • 长轮询在GCP PubSub JS SDK上可用吗? 我希望能够同时处理多个PubSub消息,例如: 这是它将如何在AWS上工作的一个示例: SQS队列包含超过5条消息。 侦听器将在单个中一次获得5条消息。事件

  • 我有一个restendpoint示例。org,返回表单的json响应 我的路线是这样的 我读过关于轮询消费者的内容,但找不到如何继续轮询endpoint的示例,直到它返回“success”响应。 是否应该使用轮询消费者?如果是这样的话,可以举一个与我的案例相关的例子。用于轮询restendpoint的任何其他资源都非常有用。

  • 我的问题是我无法使用获得无限流。在我获得初始轮询()请求的凭据后-我执行初始轮询()请求。如果没有变化,每个轮询()请求会在25秒内响应,如果有任何变化,则会更早响应-返回changed_data[]。每个响应都包含下一个轮询请求所需的数据-我应该在每次轮询()响应后执行新轮询()请求。这是我的代码: 我是RxJava新手,也许我不懂一些东西,但我无法获得无限流。我接到3个电话,然后是onNext