Spring Cloud Stream:如果 enableAutoCommitOnError=true,提交调用是否保证在方法注释 @StreamListener("errorChannel") 之后发生?
Spring Cloud Stream: Are commit calls guaranteed to happen after method annotated @StreamListener("errorChannel") if enableAutoCommitOnError=true?
考虑我已经设置了 SCS 属性 enableAutoCommitOnError=true
(还有 enableAutoCommitOffset=true
和 ackEachRecord=true
)
而且我有一个侦听错误的方法如下:
@StreamListener("errorChannel")
public void handleError(ErrorMessage errorMessage, @Headers MessageHeaders messageHeaders)
{
...
}
我的问题是:
- 调用是否保证在
handleError
退出后发生?
- 如果
handleError
本身抛出异常,是否会尝试提交偏移量?
从我的测试来看,这两个问题的答案似乎都是肯定的,但我不确定是否有保证,或者我只是走运。
是;它会在调用错误处理程序之后发生;从侦听器容器的角度来看,整个 spring-cloud-stream 基础设施就是记录“侦听器”。
考虑我已经设置了 SCS 属性 enableAutoCommitOnError=true
(还有 enableAutoCommitOffset=true
和 ackEachRecord=true
)
而且我有一个侦听错误的方法如下:
@StreamListener("errorChannel")
public void handleError(ErrorMessage errorMessage, @Headers MessageHeaders messageHeaders)
{
...
}
我的问题是:
- 调用是否保证在
handleError
退出后发生? - 如果
handleError
本身抛出异常,是否会尝试提交偏移量?
从我的测试来看,这两个问题的答案似乎都是肯定的,但我不确定是否有保证,或者我只是走运。
是;它会在调用错误处理程序之后发生;从侦听器容器的角度来看,整个 spring-cloud-stream 基础设施就是记录“侦听器”。