正在等待使用spring boot、kafka和reactjs的后端进程响应

p4rjhz4m  于 2021-06-06  发布在  Kafka
关注(0)|答案(1)|浏览(303)

我使用SpringBoot2.1.4,kafka和react作为前端ui。我有一个用户注册过程,从用户界面需要一个后端进程和它的数据注册完成之前。
流程如下:
前端ui向api发出请求,api返回令牌并将消息放入请求kafka队列
消息由后端进程处理(大约需要1分钟)
当进程完成时,一条带有令牌和数据的消息被写入一个reply kafka队列,该队列指示进程完成
我想要的是前端ui发出初始api请求,该请求立即返回,显示加载屏幕,并在注册过程完成时显示就绪消息。
我想到了几个选择:
将kafkalistener附加到回复队列。一旦回复消息出现,将响应和令牌存储在数据存储中(例如redis)。向ui提供一个api,用于检查令牌的数据存储。ui将每10秒轮询一次此api。如果2分钟后响应不可用,将要求用户稍后返回。
将WebSocket与react一起使用。我以前没有使用过websockets,但我唯一不确定的是,如果我有多个registration microservice示例,这是否会导致客户端/api通信出现任何问题。
关于处理这个问题的最佳方法有什么建议或其他选择吗?

mwg9r5ms

mwg9r5ms1#

将kafkalistener附加到回复队列。一旦回复消息出现,将响应和令牌存储在数据存储中(例如redis)。向ui提供一个api,用于检查令牌的数据存储。ui将每10秒轮询一次此api。如果2分钟后响应不可用,将要求用户稍后返回。
这会有用的。不过,为了简单起见,我会使用内置的rocksdb进行存储。下面是用于公开可在kafka流之外查询的状态存储的文档。
https://kafka.apache.org/20/documentation/streams/developer-guide/interactive-queries.html
将WebSocket与react一起使用。我以前没有使用过websockets,但我唯一不确定的是,如果我有多个registration microservice示例,这是否会导致客户端/api通信出现任何问题。
它可能会引起问题。这取决于注册服务的实施。您将不知道客户端将与哪个注册服务示例建立连接。例如,会话需要在redis这样的外部数据源中进行管理,或者您必须使用支持粘性会话的laod平衡器(有点过时的解决方案)。

相关问题