将 kafka 与 jpa 一起使用时的良好做法
2022-09-03 14:32:26
我目前在一个使用JPA和Kafka的项目中。我试图找到一套结合这些操作的良好实践。
在现有代码中,生产者与jpa用于同一事务中,但是,从我所读到的内容来看,它们似乎没有共享事务。
@PostMapping
@Transactional
public XDto createX(@RequestBody XRequest request) {
Xdto dto = xService.create(request);
kafkaProducer.putToQueue(dto, Type.CREATE);
return dto;
}
其中,kafka 生产者定义如下:
public class KafkaProducer {
@Autowired
private KafkaTemplate<String, Type> template;
public void putToQueue(Dto dto, Type eventType) {
template.send("event", new Event(dto, eventType));
}
}
这是组合 jpa 和 kafka 的有效用例吗,事务边界定义是否正确?