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

使用外部目标进行Spring云数据流错误处理

闽康安
2023-03-14

我一直在阅读spring cloud stream文档,特别是错误处理:

@StreamListener(Sink.INPUT) // destination name 'input.myGroup'
public void handle(Person value) {
    throw new RuntimeException("BOOM!");
}

@ServiceActivator(inputChannel = Processor.INPUT + ".myGroup.errors") //channel name 'input.myGroup.errors'
public void error(Message<?> message) {
    System.out.println("Handling ERROR: " + message);
}

关于留档所说的,当您想要捕获错误时,您可能需要使用@ServiceActivator。这没有关联的外部目标。

@StreamListener注释的使用专门用于定义连接内部通道和外部目标的绑定。鉴于目标特定的错误通道没有相关的外部目标,这种通道是Spring集成(SI)的特权。这意味着必须使用SI处理程序注释之一(即@ServiceActivator、@Transex等)定义此类目的地的处理程序。)。

我还关注了有关错误通道创建的整个线程,其中确认使用@ServiceActivator注释不会创建外部目标来传播错误。

我有一个用例,其中外部侦听器进程将消耗发布到特定Kafka错误主题中的错误。基于此,我有以下问题,

  1. 此注释提供的功能是什么
  2. 将错误传播到外部目标的好方法是什么?(比如说,Kafka主题)
  3. 是否将错误发布到外部目标,以便以后在良好模式下使用

共有1个答案

陈马鲁
2023-03-14

@ServiceActivator将专门用于内部错误处理(即,由同一应用程序)。如果希望将错误发送到Kafka主题,以便外部使用者可以使用这些错误,则应使用DLQ。你可以在这里找到更多细节https://docs.spring.io/spring-cloud-stream/docs/Elmhurst.RELEASE/reference/htmlsingle/#kafka-dlq处理

请让我们知道如果你还有更多的问题

 类似资料:
  • 我们在Spring Cloud Stream上有一个应用程序,它与Project React集成在一起。我们通过在消息标题中设置spring.cloud.stream.sendto.destination来动态设置目标主题并发布消息。我们正在寻找处理错误的情况下,如Kafka服务器断断续续或主题不可用而发布。我们已经实现了@ServiceActivator来处理所有错误。动态设置主题时,Servi

  • 顺便说一句:我的应用程序是一些REST控制器和一些批处理作业的组合。那么使用云数据流有意义吗?如果没有,那么是否有更好的控制台管理器用于批处理作业(如重新启动、取消作业门户)等?

  • 我已经使用Spring云流启动了一个小型微服务。 我只有两个流绑定,如下所示: 我用Serenity开发了组件测试,我将通道注入到我想要发送测试消息的地方: 哪里: 只是定义为字符串常量: 组件测试模块导入依赖项: 我发送的信息如下: 快乐流工作正常。但是,我想在侦听器无法处理消息时测试错误流。 这是一个监听器的例子: 从try/catch引发异常时,错误由服务激活器处理: 在没有Spring-C

  • 我需要在Spring云流kafka活页夹错误处理场景的帮助。我的应用程序有一个java 8消费者,其绑定在application.yaml中指定。 application.yaml: 现在,我正在处理错误,有两个问题: > 我正在尝试手动包装消息的消费,而不是使用自动提交偏移设置为真。因此,当我将自动提交偏移设置设为假并测试错误场景时,会面临奇怪的行为,即每当抛出异常时,消息都会重试n次,即使在服

  • Promise 链在错误(error)处理中十分强大。当一个 promise 被 reject 时,控制权将移交至最近的 rejection 处理程序(handler)。这在实际开发中非常方便。 例如,下面代码中所 fetch 的 URL 是错的(没有这个网站),.catch 对这个 error 进行了处理: fetch('https://no-such-server.blabla') // re