当前位置: 首页 > 知识库问答 >
问题:

在Springboot微服务api中,如何使用AMQP队列调用另一个服务器,从另一个服务队列获取响应,发送响应

籍兴文
2023-03-14

---->/createorder-->a服务器---->a向B的服务器发送消息队列---->B服务器处理它---->向a发送消息---->a响应请求。

在此过程中,如何将请求保存在服务器A中,并等待服务器B的响应。

共有1个答案

濮阳耀
2023-03-14

听起来您需要熟悉企业集成模式和使用Spring Integration的it实现。有一个类似gateway的模式,这个框架有一个用于JMS出站请求/应答的实现:https://docs.spring.io/spring-integration/docs/current/reference/html/JMS.html#jms-output-gateway。

另一方面,Spring AMQP不支持AMQP1.0协议,该协议更有可能由常规的JMS API处理。

Spring JMS中的jmstemplate还为我们提供了一个API,如下所示:

/**
 * Send a message and receive the reply from the specified destination. The
 * {@link MessageCreator} callback creates the message given a Session. A temporary
 * queue is created as part of this operation and is set in the {@code JMSReplyTO}
 * header of the message.
 * @param destinationName the name of the destination to send this message to
 * (to be resolved to an actual destination by a DestinationResolver)
 * @param messageCreator callback to create a message
 * @return the reply, possibly {@code null} if the message could not be received,
 * for example due to a timeout
 * @throws JmsException checked JMSException converted to unchecked
 * @since 4.1
 */
@Nullable
Message sendAndReceive(String destinationName, MessageCreator messageCreator) throws JmsException;
 类似资料:
  • 我正在使用尤里卡发现服务器。我可以通过通过使用服务名从另一个微服务调用一个微服务,这对Eureka服务器是可见的。我听说在不久的将来将被弃用。 我还可以通过使用从另一个微服务调用一个微服务,但在本例中,我需要使用整个主机名。我不能叫他们服务名称。 是的,我可以从属性文件设置基本url,这样不需要重新启动jar,我们就可以更改基本url。如果我们这样做,那么我们可能不需要任何discovery服务器

  • 我有两个endpointapi,它们是/uploadand/redirect 我不知道为什么会发生这种情况。谢谢你的帮助。

  • 各位专家下午好, 我需要调用3个REST API的顺序调用,作为单个客户机调用GET/offers的一部分,以检索百货公司不同通道中每种产品的可用报价,如下所示 然后在循环中检索每个并调用第二个API以获得产品 然后在循环中检索每个并调用第三个API以获得提供 最后,整理所有的响应,将报价列表发送给客户。

  • 我使用CXF、REST服务和Apache Camel实现了以下API。 http://localhost:9090/api/compute http://localhost:9091/api/listaction null IllegalArgumentException:无效的URI:/API/ListAction/API/ListAction。如果您正在转发/桥接httpendpoint,则在

  • 我有一个要求,其中,作为Web服务[Java]的一部分,我将作业的详细信息输入数据库,数据库由Windows服务[C#]异步处理,并对Javaweb服务通知作业的状态。 情景: 客户端对JavaWeb服务进行同步Restful调用。 JavaWeb Service将作业详细信息输入数据库(类似于进行异步调用),并等待Windows Service的响应(这是对JavaWeb Service的新HT

  • 我有一个在线表格,允许用户通过电子邮件向公司投诉。为了测试它,我使用了gmail smtp作为我的主机。当发件人也是gmail时,我没有问题地将消息接收到指定的电子邮件帐户,但我希望“发件人”不仅仅限于gmail帐户。看来smtp只适用于从同一台服务器发送电子邮件? 如有任何帮助,将不胜感激。如果需要,我也可以提供我的代码。

  • 我有以下服务: 和其他服务 我有我的Junit 当我在调试模式下运行这个测试时,我看到这个。合同服务。getInfo(multipartFileId) 正在返回我“null”。 我在嘲弄中错在哪里。 我刚刚在JUnit中嘲笑了ContractService。我还需要模拟AccountServiceImpl吗? 编辑:添加saveInCache和getInfo方法