部门:金融衍生产品部
产品线:做市商2.0系统
需求描述:
对接kcxp系统的时候,需要将队列中的消息实时推送到前端展示。
痛点:类似于进度条信息无法实时的更新
功能现状:
版本:
koca-kcbp@3.6.0
koca-bex-web@3.6.1
koca-bex@3.6.1
无法实时获取xp队列消息
功能期望:
(1)在ApiController提供sse请求的接口
@PostMapping(path = “${koca.bex.web.api.path:/api}/sse/{code}”),返回void
并且将HttpServletResponse进行设置
response.setContentType(“text/event-stream”);
response.setCharacterEncoding(“UTF-8”);
取出writer
PrintWriter writer = response.getWriter();
把writer传进doPost里面
(2)执行doPost的时候,传递这个writer
ApiDispatcher.execute(serviceRequest, writer);
(3)执行ApiDispatcher的时候,传递这个writer
serviceFacade.dispatch(serviceRequest, writer);
(4)ApiServiceFacade把writer存为属性;
(5)改动KcbpServiceExecutorImpl,添加一个成员属性 private PrintWriter writer = null;
(6)ApiServiceFacade执行doBex的时候,将KcbpServiceExecutorImpl的ServiceExecutor通过setter方法设置writer
(7)改动KcbpClient的execute,支持入参PrintWriter,在ServiceExecutor.execute的时候将writer传进入
(8)改动KcbpConnection的execute,支持入参PrintWriter;KcbpConnection执行handleMoreResult的时候,在result.add(row);之前,判断writer是不是为null,如果不是,则:
writer.write(JSON.toJSONString(row));
writer.flush();
结果随着flush推送到前端
需求紧急程度:中等
石沉大海
已收到,正在评估审核
有点眉目了嘛
11月17号KOCA4.7迭代时会有评审结果
能不能在3.X的版本上去支持呢?如果在4.X版本的话,我们目前没办法去适配了
可以的