【问题标题】:Spring Cloud Stream error handling... errorSpring Cloud Stream 错误处理...错误
【发布时间】:2019-11-12 08:41:54
【问题描述】:

这不是一个真正的问题,因为我找到了一种解决方法,但它与文档冲突,所以我想分享和记录它。 仅供参考 Spring Boot 2.1.10 + SCSt 2.1.4 + RabbitMQ binder

我首先实现了官方文档中给出的应用程序本地错误处理程序:

@StreamListener(Sink.INPUT)
public void handle(Person value) {
    throw new RuntimeException("BOOM!");
}
@ServiceActivator(inputChannel = Sink.INPUT + ".my-group.errors")  // won't work
public void error(ErrorMessage message) {
    log.error("Handling ERROR: " + message.getPayload().getMessage());
}

spring.cloud.stream.bindings.input.destination=persons.inputs
spring.cloud.stream.bindings.input.group=my-group

但这并不顺利,至少可以这么说。这是我最终不得不保留的:

@ServiceActivator(inputChannel = "persons.inputs.my-group.errors")

如您所见,我不得不坚持实际的destination定义而不是channel的定义;我觉得这很不舒服!我想再次强调,这与此处的官方文档相矛盾:https://docs.spring.io/spring-cloud-stream/docs/current/reference/htmlsingle/#_application_error_handling(另外还有明显的拼写错误,恕我直言:他们甚至写道,destinationName 实际上是必需的)

任何人都可以与我分享对这种情况的想法吗?我做对了吗?我认为这是错误的吗?

【问题讨论】:

    标签: spring-boot error-handling rabbitmq spring-cloud spring-cloud-stream


    【解决方案1】:

    这是文档中的错误;确实,不幸的是,错误通道名称中没有使用绑定名称而不是目标和组,但是现在更改它为时已晚。我们可能会在未来的版本中做一些事情。

    请打开2GitHub issues

    • 修复文档
    • 考虑添加一个选项,以改用绑定名称来命名错误通道。

    【讨论】:

      猜你喜欢
      • 2019-10-03
      • 2018-06-05
      • 1970-01-01
      • 2021-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-08
      • 1970-01-01
      相关资源
      最近更新 更多