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

春云流:如何重新发布到死信队列还抛出异常

沈淇
2023-03-14

我将一个使用Spring AMQP的项目迁移到一个使用Spring Cloud Stream和RabbitMQ的项目。

spring.cloud.stream.bindings.input1.destination=dest1
spring.cloud.stream.rabbit.bindings.input1.consumer.auto-bind-dlq=true
spring.cloud.stream.rabbit.bindings.input1.consumer.republishToDlq=true
@StreamListener("input1")
public void process(String message){
    System.out.println("Trying...");
    throw new RuntimeException();
}
Trying...
Trying...
Trying...
(end of log, no exception thrown)

谢了!

共有1个答案

翟永春
2023-03-14

请参见有关使用者属性的文档。

设置...consumer.max-aptits=1以禁用重试。

 类似资料:
  • 我正在使用RabbitMQ的spring cloud stream。我试图通过在运行时删除队列并将消息发送到删除的队列来进行否定测试。 我正在侦听来自队列1的消息,并将消息发送到队列2(已删除的一个)。我原以为上面的代码会抛出异常,但事实并非如此。甚至从队列1读取的消息也已被确认。我在队列1和队列2上有一个死信队列,但消息没有进入DLQ。

  • 死信队列(Dead Letter Queue)本质上同普通的Queue没有区别,只是它的产生是为了隔离和分析其他Queue(源Queue)未成功处理的消息。 创建死信队列的方法参见createQueue() API,与创建普通队列无异, 死信队列不可调用deadMessage(), deadMessageBatch API,其他操作都与对普通Queue的操作无异。 为了将源Queue的未能成功处理

  • 对于异步的触发器,平台会对函数失败的任务进行最多3次重试。 在新建触发器的时候,为触发器配置一条死信队列,从用户的EMQ队列中选择一条,用于接收函数失败的任务。 在设置死信队列前,请对group: CIf76b0600-24e9-42c4-acf3-d491fbd9fd71​ 授予 FULL_CONTROL 权限,若不授予权限,平台将丢弃失败的任务信息。 消息的内容如下,以后可能增加字段,请用户在

  • 我有这样的情况,即活动调用管理器类调用提供者。 活动->管理器(带有asyncTask的方法)->提供程序 我应该如何将捕获的异常发送回活动?

  • @apiResponse似乎也没有更正响应类型。 如本问题所述,如何在swagger Codegen中处理多个响应/返回类型(204为空,400为非空等)? 我可以这样扔 但是有没有更好的方法来做到这一点呢?我只想将.getResponseBody()作为对象而不是字符串返回。 非常感谢。