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

删除exchange后RabbitTemplate发送失败

樊琦
2023-03-14

我有以下问题。我使用的是spring-rabbit-2.0.5.release中的RabbitTemplate类。并使用它将messeges发送到不同的交易所。默认情况下,一切都很好。但是,当其中一个交换被删除并且有许多消息要处理时,将消息发送到现有的交换时会出现问题--但没有引发错误--消息只是静默地删除。

代码可以简化到这一点。在给定的场景中,删除exchange EX2之后--只有部分邮件会发送到EX1。一个简单的解决办法是在每次发送后添加一个线程。sleep(50)--但这显然是不可接受的。

    RabbitTemplate rabbitTemplate = new RabbitTemplate();
    for (int i = 0; i < 1000; i++) {
        rabbitTemplate.send("EX1", "RK1", someMessage);
        rabbitTemplate.send("EX2", "RK2", someMessage);
    }

在做了一些调查之后,我得出了以下结论:

但总的来说,这似乎只是RabbitTemplate的预期行为(当您不使用确认时)

共有1个答案

萧和平
2023-03-14

我认为您需要研究Publisher确认和返回的内容:https://docs.spring.io/spring-amqp/docs/2.1.3.release/reference/html/_reference.html#cf-pub-conf-ret

也请跟随有关作用域操作的链接。

 类似资料:
  • 几天前,我无法让mysql运行了(xampp),经过一些谷歌搜索,我发现了这篇文章:xampp-MySQL意外关机 它说删除ibdata1文件,我做了,mysql再次启动,但一个数据库的表不见了,但我仍然可以看到数据文件夹中包含值的表(ibd和frm文件),我可以恢复这些表吗?

  • 问题内容: 范围:两个表。创建新的顾客时,他们会将有关他们的一些信息存储到第二张表中(这也使用触发器完成,它可以按预期工作)。这是我的表结构和关系的示例。 表1-> 顾客 表2-> patron_info 管理员可以管理顾客。当他们选择移走顾客时,将顾客从 桌子1 移开。此时, 表2 没有任何反应。 我只是想创建一个触发器,以便在表1的项目已删除时从表2中删除。这是我尝试过的… 最初,我尝试删除触

  • 我的模型包含大量的代理。但是,我希望部分删除/删除一些在运行时完成工作的代理,以便释放计算内存、加快模型执行并避免OOM。 context.remove()是否真的永久消除/杀死代理(对象)?此操作后是否释放内存?如果不是,正确的过程是什么?

  • 我重写了类A的容器请求过滤器和类B的容器响应过滤器。 现在,每当有rest调用时,类a首先得到请求,然后它转到另一个类C。 流程是,请求到达类A,然后到达类C,最后到达类B。 现在当我看到有些东西不好,我需要发送响应时,我怎么能从A类做到这一点。我需要绕过C类。

  • 问题内容: 我有以下代码: 接收脚本(block_ajax.php)仅接收“ action”和“ listid”参数。当我检查使用Chrome发送的内容时,我发现“ layout”参数甚至没有发送到后端脚本。 由于空数组与缺少数组之间存在差异,因此我想让JQuery发送空数组。我发现一些迹象表明JQuery(1.6.1)似乎可以做到这一点,但没有办法阻止它这样做。JSON格式允许使用空数组和空对象