Java REST服务等待异步进程的响应

Java REST服务等待异步进程的响应,java,rest,asynchronous,spring-boot,jms-topic,Java,Rest,Asynchronous,Spring Boot,Jms Topic,使用Spring Boot开发REST服务 该API目前使用JMS发布到一个主题&该主题有多个订阅者 现在,我们有了一个进程“X”,它整合了这些主题的响应,并将响应推送到队列中 现在,我想让API(REST服务)等待这个队列(由“X”发布),以便进行同步处理 JMSReplyTo会支持这样一个案例吗? 编辑: 简化 在示例中(在上述链接中提供)—— 服务器轮询队列并等待其响应 我们的REST服务轮询到队列&必须在不同的队列上等待 换言之,web服务如何等待并从队列中读取数据?它还没有发布到队列

使用Spring Boot开发REST服务

该API目前使用JMS发布到一个主题&该主题有多个订阅者

现在,我们有了一个进程“X”,它整合了这些主题的响应,并将响应推送到队列中

现在,我想让API(REST服务)等待这个队列(由“X”发布),以便进行同步处理

JMSReplyTo会支持这样一个案例吗?

编辑:

简化

在示例中(在上述链接中提供)—— 服务器轮询队列并等待其响应

我们的REST服务轮询到队列&必须在不同的队列上等待


换言之,web服务如何等待并从队列中读取数据?它还没有发布到队列中。我们为解决这个问题所做的是什么?不确定,这是正确的方法

  • 将默认头JMSReplyTo设置为空
  • 添加了自定义标题“ReplyTo”
  • 即使我们将JMSReplyTo传递给另一个队列——我们已经观察到,响应在队列处理完消息之后立即返回给调用者(RESTAPI)

    当我们清空JMSReplyTo时,它没有返回响应。 那么,响应是如何返回到RESTAPI的呢?原因是,我们已经创建了自定义头ReplyTo

    每个队列不断地将头ReplyTo传递给所有其他队列,在这些队列中传递消息以进行进一步处理

    如果使用任何队列,则没有进一步的处理(这取决于数据、客户端和…)使队列发回ReplyTo,这是原始JMS队列,REST API正在等待

    这一直在工作,但是有一些性能问题-考虑到消息被传递到多个队列

    然而,考虑到这个API的主要任务是确保数据被传递到所有系统(集成点)——它正在完成它的工作


    我们将再次访问,以了解如何更改设计以获得更好的吞吐量。

    可能是您发送消息的标识符的响应。在JMS处理的末尾,将JMS处理的结果存储在某处。在您的客户机中,引入基于该标识符的简单轮询来获取结果。或者简单地创建WebSocket(但那不是REST服务)是的,现在-我返回一个UUID&要求客户机基于UUID进行读取