我目前正在构建一个REST Web服务,该服务需要以请求/响应模式与Kafka进行通信。(我知道卡夫卡并不是真正为此而设计的(。
- 客户端调用 REST Web 服务。
- REST Web 服务向 Kafka 发布消息
- 在 Kafka 的另一端,应用程序使用消息并将响应发布回 Kafka
- (在与 #2 相同的请求中(REST Web 服务侦听 Kakfa 并等待与请求对应的响应
- REST Web 服务将响应返回给客户端
步骤 1 到 3 似乎很容易,但我正在努力完成第 4 步。
我的想法是在每条消息中传播一个 ID,以便我可以检索与请求对应的响应。
但是,我很难弄清楚如何在 REST Web 服务上设置侦听器。侦听器如何将消息返回给控制器?
我认为最好为每个用户创建一个主题,然后用户可以向另一个服务发送消息,这样的消息是这样的:
{
user:"myUserName"
data:"data of message"
}
那么服务只需要推送到主题"user.myUserName"然后从 Web 客户端只需要订阅"user.myUserName"(使用消费者组配置,这仅用于读取最新消息(......
我认为最好的方法是实现 websocket,然后以这种方式推送/读取;)
再见,美好的一天。