【发布时间】:2018-09-15 04:29:28
【问题描述】:
Spring 托管的 KafkaTemplate 提供
template.send(record).addCallback(...
template.executeInTransaction(...
现在假设我有一个方法 doWork(),它在事件(比如 TCP/IP 消息)上触发。
@Autowired
KafkaTemplate template;
// This method is triggered on a event
doWork(EventType event){
switch(event){
case Events.Type1 :
template.send(record); break;
case Events.Type2 :
// Question : How do I achieve a commit of all my previous sends here?
default : break;
}
}
基本上,我需要通过在 doWork() 或 a 上添加 @Transaction 来实现事务
template.executeInTransaction(...
在代码中。但是我想批处理几个 [template.send()] 并在几次调用 doWork() 方法后进行提交,我该如何实现?
我的生产者配置启用了事务,并将 KafkaTransactionManager 连接到生产者工厂。
【问题讨论】:
标签: java spring kafka-producer-api spring-kafka