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

异步Spring Remoting(AMQP)客户端

芮学
2023-03-14

我有一个实现API网关模式的Spring Boot web应用程序,在该模式中,嵌入式Tomcat实例接收请求并将它们转发给许多微服务(也是Spring Boot应用程序)。我使用带有AMQP的Spring Remoting来建立通信,对这些服务的一些调用可能需要一段时间才能完成(最昂贵的调用需要1-2秒)。

我已经成功地在这些微服务上配置了侦听器并发性,一切都很顺利,但现在我想知道客户端的默认行为是什么。对那些微服务的调用是同步的还是异步的?而且,如果默认情况下它们是同步的,我如何使它们异步,以便这些调用不会阻塞发出它们的“Tomcat”线程(使其在等待服务响应时可用于处理其他请求)?

共有1个答案

游安康
2023-03-14

1.6版本引入了一个新的AsyncrabbitTemplate。当调用SendandReceive()(和ConvertSendandReceive())方法时,将返回ListenableFuture,您可以用它注册回调以接收应答。

 类似资料:
  • 异步Mysql客户端 AsyncMysql::query($sql, $usePool = true) 第二个参数设为false将不会使用连接池中的资源,默认都会从连接池中取,配置连接池数量 => config/database.php 具体使用 use AsyncMysql; //设置超时时间 AsyncMysql::setTimeout(2); $res = (

  • 异步Redis客户端 连接池(连接池默认开启) use AsyncRedis; //关闭连接池 AsyncRedis::enablePool(false); //开启连接池 AsyncRedis::enablePool(true); 使用AsyncRedis use AsyncRedis; //设置超时时间 AsyncRedis::s

  • 异步Http客户端 Get方式 1.使用域名形式 use AsyncHttp; //直接使用域名, get方式 $http = new AsyncHttp('http://groupco.com'); //设置2s超时 $http->setTimeout(2); //$http->setCookies(['token' => 'xxxx']);

  • 异步Tcp客户端 串行发包 use AsyncTcp; $tcp = new AsyncTcp('127.0.0.1', 9501); $tcp->setTimeout(2); //串行发送 $res = (yield $tcp->call('hello server!')); $res = (yield $tcp->call('hello serv

  • 我正在使用Android异步Http客户端。我的代码看起来像这样,并且运行良好。 我实现了一个静态HTTP客户端。我的服务器返回这个JSON数据。我不想将其视为字符串并将其转换回JSON。但是当我将其更改为eclipse告诉我 new AsyncHttpResponseHandler(){}类型的onSuccess(JSONObject)方法必须重写或实现超类型方法

  • 为方便测试,我们以RPC中的例子来实现服务端,具体请看文档RPC章节。 纯原生异步 public static function mainServerCreate(ServerManager $server,EventRegister $register): void { // TODO: Implement mainServerCreate() method.