【发布时间】:2021-09-03 07:22:36
【问题描述】:
我有一个可以被多个用户同时调用的休息端点。这个休息端点调用事务性 Kafka 生产者。 我的理解是,如果我们使用 Transaction,我不能同时使用相同的 Kafka Producer 实例。
如何高效地为每个 HTTP 请求创建一个新的 Kafka 生产者实例?
//Kafka Transaction enabled
producerProps.put(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, "true");
producerProps.put(ProducerConfig.TRANSACTIONAL_ID_CONFIG, "prod-1-" );
@Service
public class ProducerService {
@Autowired
private KafkaTemplate<Object, Object> kafkaTemplate;
public void postMessage(final MyUser message) {
// wrapping the send method in a transaction
this.kafkaTemplate.executeInTransaction(kafkaTemplate -> {
kafkaTemplate.send("custom", null, message);
}
}
【问题讨论】:
标签: spring-boot apache-kafka spring-kafka kafka-producer-api