zoukankan      html  css  js  c++  java
  • RabbitMq(四)远程过程调用RPC

    远程过程调用(RPC):

      客户端发送一个请求到远程服务器上,远程服务器接收请求并处理结果,将结果响应给客户端,这个过程被称为远程过程调用。

    RPC涉及到的基本知识:

      关于队列:

        整个过程会设计到两个队列一个是专门保存请求的队列,一般名字被称为rpc_queue,另一个队列被称为响应队列,专门用于保存服务器处理的响应结果,这个队列的名字是随机生成的字符串。

      关于消息的基本属性BasicProperties:

        回复(replyTo):是响应队列的名字,当服务器接收请求并处理好结果,服务器需要知道将响应的信息发送到哪个队列中;关联id(correlationId):是一个UUID值,发消息的时候会带上这个值,该值在客户端接收响应时用于判断接收到的响应消息是否是自己发出请求对应的响应; 客户端在发送请求时需要带上replyTo和correlationId两个属性。

      其他属性:

        contentType:内容类型,用来描述编码的MIME类型。例如,经常使用JSON编码是将此属性设置为一个很好的做法:application/json,在rpc中该属性不是必须的

    RPC的过程描述

      1. 客户端首先将请求消息发送到请求队列,在发送请求时需要指定replyTo和correlationId两个值;

      2. 服务端需要预先订阅请求队列(rpc_queue),以便服务器端能随时接受到请求消息,当服务端接收到请求消息时对请求进行处理,将处理结果发送到响应队列(随机队列)中

      3. 客户端还要预先订阅响应队列(随机队列),以便当服务器发送响应消息到响应队列中,客户端能及时收到响应结果,服务器在将响应发送到响应队列中还要指定correlationId值(类似于唯一标记当前的请求),这样当客户端从响应队列中接收到消息时就可以通过correlationId的值是否和发送请求的关联id值是否相同,如果相同就证明这个响应结果就是这个请求对应的响应结果。注意这个预先订阅响应队列的步骤需要在客户端中完成,最好在客户端发送请求消息前就完成。

    ---------------------
    作者:vbirdbest
    来源:CSDN
    原文:https://blog.csdn.net/vbirdbest/article/details/78634188

  • 相关阅读:
    hdu5233 Gunner II
    hdu5247 找连续数
    hdu5246 超级赛亚ACMer
    codeforces Looksery Cup 2015 C. The Game Of Parity
    Spring系列之Spring常用注解总结
    jni不通过线程c回调java的函数 --总结
    Spring声明周期的学习心得
    java web20套项目
    jsp和servlet的关系
    JavaWeb开发之四:servlet技术 黑马程序员_轻松掌握JavaWeb开发之四Servlet开发 方立勋老师视频教程相当的经典
  • 原文地址:https://www.cnblogs.com/aaronRhythm/p/11043971.html
Copyright © 2011-2022 走看看