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

在spring中节流@JMSListener(防止TaskRejectedException)

谭光辉
2023-03-14

我当前有一个配置有以下线程池的JMSListener:

    ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
    executor.setCorePoolSize(5);
    executor.setMaxPoolSize(10);
    executor.initialize();

我正在监听的队列有超过100条消息,当我启动侦听器时,它将处理前10条消息,没有任何问题,然后我将为其余的消息获得TaskRejectedException异常。

我的意图是,如果没有可用的线程来处理消息,@JMSListener不应该拉出任何新消息。有没有人知道这个配置是不是可以?我使用的是SpringBoot的1.5.3版本。

共有1个答案

洪德寿
2023-03-14

如果您不想丢失消息,就不应该使用执行器;容器将在每个消息在执行器中排队后立即对其进行ack。如果系统死亡,任何尚未处理的消息都将丢失。

相反,使用容器的并发设置来多线程侦听器。

如果您确实必须使用executor并且不介意丢失消息,请在Executor-SetRejectedExecutionHandler()中使用调用方运行策略。

 类似资料:
  • 何谓节流和防抖? 节流 节流的意思是,规定时间内,只触发一次。比如我们设定500ms,在这个时间内,无论点击按钮多少次,它都只会触发一次。具体场景可以是抢购时候,由于有无数人 快速点击按钮,如果每次点击都发送请求,就会给服务器造成巨大的压力,但是我们进行节流后,就会大大减少请求的次数。 防抖 防抖的意思是,在连续的操作中,无论进行了多长时间,只有某一次的操作后在指定的时间内没有再操作,这一次才被判

  • 本文向大家介绍js的节流和防抖?相关面试题,主要包含被问及js的节流和防抖?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: http://www.cnblogs.com/coco1s/p/5499469.html 参考回答: 必要性:由于字符串、对象和数组没有固定大小,所有当他们的大小已知时,才能对他们进行动态的存储分配。JavaScript程序每次创建字符串、数组或对象时,解释器都必须分

  • 我想为需要JMS侦听器的应用程序使用Spring 4.1中提供的新注释和功能。 我已经仔细阅读了Spring 4.1 JMS改进帖子中的注释,但我仍然错过了和之间的关系,以及我将如何设置应用程序以指示正确的或。 以下是@JmsListener的建议使用 现在,我不能在我的实际代码中使用它,因为“myQueue”需要使用从配置文件中读取。 我可以使用设置适当的myContainerFactory,但

  • 问题内容: 在Linux平台上,用于进程(C ++应用程序)检查其实例尚未运行的最佳方法是什么? 问题答案: 执行此操作的标准方法是在某个地方创建一个pidfile,通常包含程序的pid。 您无需将pid放在其中,只需在其上放置排他锁即可。如果您打开它进行读/写并使用LOCK_EX LOCK_NB,如果文件已被锁定,它将失败。这是无竞争条件的,如果程序崩溃,该锁将自动释放。 通常,您希望按用户进行

  • 我们有一个流氓生产者将Kafka Header设置为一个类,该类是生产者的一部分,但不是使用Kafka Streams绑定器在Spring Cloud Stream应用程序中实现的消费者的一部分。它导致了一个异常

  • 我有几个配置文件,比如: application.yaml 我想我需要一些定制属性spring Binder.class定制,但我找不到任何解决方案。 提前感谢!