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

RabbitMQ&Spring amqp重试而不阻止使用者

戚阳
2023-03-14

我正在使用RabbitMQ和Spring amqp,我希望它们不会丢失消息。通过对重试使用指数回退策略,我可能会阻止我的消费者,因为他们可能正在处理他们可以处理的消息。我想给失败的消息几天时间重试指数回退策略,但我不想让使用者阻塞几天,我想让它继续对其他消息工作。

我知道我们可以通过ActiveMQ(在将来的某个时刻重试消息(ActiveMQ))实现这种功能,但无法为RabbitMQ找到类似的解决方案。

有没有办法用Spring amqp和RabbitMQ实现这一点?

共有1个答案

江超英
2023-03-14

你可以通过死信交换来做。拒绝消息并将其路由到dle/DLQ,并拥有一个单独的侦听器容器,该容器从DLQ中使用,并根据需要停止/启动该容器。

或者,您可以使用rabbittemplatereceive(或receiveandconvert)方法(按计划)轮询DLQ,并将失败的消息路由回主队列,而不是第二个容器。

 类似资料:
  • 是否可以在Celery中使用不同的消息代理? 例如:我想使用PostgreSQL而不是RabbitMQ。

  • 英文原文: http://emberjs.com/guides/routing/preventing-and-retrying-transitions/ 在一个路由过渡过程中,Ember路由器将一个过渡对象传递给过渡相关的路由的各种钩子。任何可以访问过渡对象的钩子,都可以通过调用transition.abort()来立即取消当前过渡,如果保存了该过渡对象,那么在后续可以通过调用transition

  • 问题内容: 我有一个自定义的JDialog,当我的SwingWorker线程启动时会弹出。该对话框只有一个JProgressbar和一个Button(取消按钮)。我试图弄清楚如何取消我的SwingWorker,但是没有运气。我想我走对了。我编写了一个cancel方法,现在我只需要弄清楚按下按钮时如何调用它。代码如下… 问题答案: 您的取消按钮应调用该方法 在您的工作人员中,必须确保检查取消标志 请

  • 我在使用spring WebSockets时遇到以下错误: 用例:在我们的服务器端代码中,我们有一个在数据库中搜索值的功能。如果这些值不在数据库中。它将访问servlet并获取数据。第二部分,即访问servlet并获取数据是异步调用。 因此,对于一个请求,我们必须在数据库中搜索多个内容… 示例:在request中,我们得到了一个参数channel:1这个channel映射到多个ID,比如1映射到1

  • 一、 我与CachingConnectionFactory有一个SpringAMQP项目。我需要从AMQP连接获取一些属性,例如:状态、连接时间、通道和一些运行时度量。CachingConnectionFactory是否有任何指标支持(例如:https://www.rabbitmq.com/blog/2016/11/30/metrics-support-in-rabbitmq-java-clien

  • 问题内容: 我有一个显示多个组件的组件。从Redux存储获取数据。 当商店更新时(例如,因为我删除了一个项目),所有都重新呈现。 这是为什么? 我知道我可以用来阻止新的渲染,但是我认为Redux会在内部进行。 List.js Item.js 问题答案: 一些现有技术(如Dan Abramov所说):Redux是一种状态管理工具。它提供了一个HOC(),但该HOC 不负责组件管理 。Redux无论如