对于最新的稳定版本,请使用 Spring for Apache Kafka 3.3.9spring-doc.cadn.net.cn

线程安全

使用并发消息侦听器容器时,将在所有使用者线程上调用单个侦听器实例。 因此,侦听器需要是线程安全的,并且最好使用无状态侦听器。 如果无法使侦听器成为线程安全的,或者添加同步会显着降低添加并发的好处,则可以使用以下几种技术之一:spring-doc.cadn.net.cn

为了便于清理线程状态(对于前面列表中的第二项和第三项),从 2.2 版开始,侦听器容器发布ConsumerStoppedEvent当每个线程退出时。 您可以使用ApplicationListener@EventListener删除方法ThreadLocal<?>instances 或remove()线程作用域的 bean。 请注意SimpleThreadScope不会销毁具有销毁接口(例如DisposableBean),所以你应该destroy()实例自己。spring-doc.cadn.net.cn

默认情况下,应用程序上下文的事件多播器在调用线程上调用事件侦听器。 如果将多播程序更改为使用异步执行器,则线程清理无效。