@RestController
@RequestMapping("/order")
@AllArgsConstructor
public class PlaceOrderSagaController {
private final SagaKafkaTemplate<PlaceOrderAggregator, PlaceOrderTopic> placeOrderSagaKafkaTemplate;
@PostMapping
@ResponseStatus(HttpStatus.ACCEPTED)
public Map<String, String> placeOrder() {
PlaceOrderAggregator aggregator = new PlaceOrderAggregator();
aggregator.setUsername("mafei");
aggregator.setTotal(200.00);
String orderId = this.placeOrderSagaKafkaTemplate.start(
aggregator,
PlaceOrderStepManager.class,
PlaceOrderTopic.DO_USER_VALIDATE
);
return Collections.singletonMap(
"order_id",
orderId//OR aggregator.getAggregatorTransactionId()
);
}
}