Я сейчас в проекте, где используются JPA и Kafka. Я пытаюсь найти набор хороших практик для объединения этих операций.
В существующем коде производитель используется в той же транзакции, что и jpa, однако из того, что я прочитал, кажется, что они не делят транзакцию.
@PostMapping
@Transactional
public XDto createX(@RequestBody XRequest request) {
Xdto dto = xService.create(request);
kafkaProducer.putToQueue(dto, Type.CREATE);
return dto;
}
где производитель кафки определяется следующим образом:
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, правильно ли определены границы транзакций?