【发布时间】: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