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

如何在抛出异常的同时添加额外的自定义头以将消息存储在Kafka上的dlq中?

哈和惬
2023-03-14

在抛出Exception iam设置使用者应用程序中的头之前,它正在被设置,但它没有被发送到死信主题,死信主题只有内置的头,如'x-Exception-Message'、'x-Origine-Partition'等。也不是我设定的那个。

下面是我的消费者应用程序中的一段代码:

modifiedMessage = MessageBuilder.fromMessage(consumedMessage).setHeader("x-ecode", new Integer(100)).setHeader(BinderHeaders.PARTITION_OVERRIDE,consumedMessage.getHeaders().get(KafkaHeaders.RECEIVED_PARTITION_ID)).build();
System.out.println("error header:"+modifiedMessage.getHeaders().get("x-ecode",Integer.class)); //100
throw new RuntimeException(modifiedMessage.toString());

注意:Iam在spring.cloud.stream.kafka.binder.header=x-ecode下设置我的application.yml中的x代码

共有1个答案

蒋俊
2023-03-14

您所做的就是创建一个新消息并丢弃它(除了将异常消息设置为它的字符串实现之外)。

这不会修改原始入站消息。

您可以简单地添加一个新的输出绑定,并自己将修改后的消息发送给它。

 类似资料:
  • 我是一名Java编程新手(实际上已经在学习),我对如何处理不同的消息有些怀疑。 我的目标是将这些不同的消息包含在同一个类(CustomExcpse类)中,以避免在从其他类抛出新CustomExceptions的每个方法上一遍又一遍地编写相同的字符串。 到目前为止,我编码: > 一个自定义异常类,它从异常扩展而来,具有不同的消息(在示例中只有两个,但还有更多)作为Strings包含,当然还有构造函数

  • 我是springboot kafka的新手,我在这篇文章后面创建了一个例子。 https://www.codenotfound.com/spring-kafka-boot-example.html 我发现您可以将kafka元数据设置为标题,但这不符合我的目的。 我能做到这一点吗?如果可能的话,我很感激你能分享一个例子。

  • 我这样卷曲:url--位置--请求POST'http://14.210.211.xxx:9001/koxxx/upload_img?img_type=img_x'--header'upload_key:asjaisjdaozmzlaljaxxxx'--form'img_file=@/home/user/image.png' 我已经用“GCloud auth List”确认了我在服务器上使用的登录数

  • 问题内容: 我有一小段代码通过一些事务进行处理。每个交易都标有交易号,该交易号是由外部程序生成的,不一定要排序。当我在处理代码中捕获到异常时,会将其扔给主类并记录下来以供以后检查。我想将交易号添加到此抛出的异常中。在保持正确的堆栈跟踪的同时还能做到吗? 例如: 问题答案: 尝试:

  • 我正在尝试使用Spring Boot 2.1给出的验证JWT令牌内的声明。问题是Spring总是使用默认异常消息抛出异常: 即使我创建了一个扩展ClientAuthenticationException的自定义异常,我也会收到相同的异常消息。 当JWT声明验证失败时,我想修改异常消息。这是我的配置类: 这是我的JWTClaimVerifier类: 当JWT声明验证失败时,我希望我的自定义异常消息有

  • 我有类似这样的结构 SQS->lambda->DLQ 但是,当lambda在向SQS添加新消息时被触发,然后失败时,消息不会存储在DLQ中。 我发现当新消息发布到SQS时触发的事件本质上是同步的。 SQS事件触发器异步调用lambda 或