我正在使用 Spring 和 Kafka,我发出如下所示的 HTTP POST 请求,并通过 Kafka 主题将一些信息发送到另一个服务。
@RequestMapping(method = RequestMethod.POST, value = "/portfolio")
public void getPortfolio(
Authentication auth,
@RequestBody User user
) {
//Data Transfer Object
UserDTO dto = user.toDTO();
dto.setId(((AuthenticatedUser) auth.getPrincipal()).getId());
//Sending message to Kafka topic
sender.sendPortfolioRequest(dto);
}
Run Code Online (Sandbox Code Playgroud)
然后我想监听不同主题的响应并在 HTTP 响应中返回数据,但我被困在这里。我可以使用下面的侦听器方法来侦听响应,但不知道如何将两者放在一起。
@KafkaListener(
topics = Topics.PORTFOLIO_RESULT,
containerFactory = "portfolioKafkaListenerContainerFactory"
)
public void portfolioListener(UserPortfolioDTO portfolio) {
System.out.println("Recieved Portfolio: " + portfolio.toString());
}
Run Code Online (Sandbox Code Playgroud)
PS 我是使用 HTTP 请求的新手,不知道这是否是我想要实现的目标的正确方法,或者我是否应该使用 POST 创建新资源并重定向到该资源或其他资源。