rabbitmq RPC java实现
来源:互联网 发布:网络销售的技巧 编辑:程序博客网 时间:2024/04/29 08:46
使用RabbitMQ来构建一个RPC系统:包含一个客户端和一个RPC服务器。
操作过程
首先定义一个队列名称,如:rpc_queue,服务器声明时队列,客户端发送消息时发送到这个队列,服务器就可以接收到消息。
当服务器接收到消息,处理完成后要把处理结果告知客户端,这个就需要有一个“回调队列”,客户端需要在发送请求的时候同时发送一个回调队列(callback queue)的地址(队列名称),服务器把处理结果发送到“回调队列”客户端就可以收到消息。
当“回调队列”接收到一个响应的时候它无法辨别出这个响应是属于哪个请求的。correlation_id 就是为了解决这个问题而来的。我们给每个请求设置一个独一无二的值。稍后,当我们从回调队列中接收到一个消息的时候,我们就可以查看这条属性从而将响应和请求匹配起来。如果我们接手到的消息的correlation_id是未知的,那就直接销毁掉它,因为它不属于我们的任何一条请求。
消息属性
AMQP协议给消息预定义了一系列的14个属性。大多数属性很少会用到,除了以下几个:
delivery_mode(投递模式):将消息标记为持久的(值为2)或暂存的(除了2之外的其他任何值)。
content_type(内容类型):用来描述编码的mime-type。例如在实际使用中常常使用application/json来描述JOSN编码类型。
reply_to(回复目标):通常用来命名回调队列。
correlation_id(关联标识):用来将RPC的响应和请求关联起来。
RPC如此工作
1、当客户端启动的时候,它创建一个匿名独享的回调队列。
2、在RPC请求中,客户端发送带有两个属性的消息:一个是设置回调队列的 reply_to 属性,另一个是设置唯一值的 correlation_id 属性。将请求发送到一个 rpc_queue 队列中。
3、RPC工作者(又名:服务器)等待请求发送到这个队列中来。当请求出现的时候,它执行他的工作并且将带有执行结果的消息发送给reply_to字段指定的队列。
4、客户端等待回调队列里的数据。当有消息出现的时候,它会检查correlation_id属性。如果此属性的值与请求匹配,将它返回给应用。
操作过程
首先定义一个队列名称,如:rpc_queue,服务器声明时队列,客户端发送消息时发送到这个队列,服务器就可以接收到消息。
当服务器接收到消息,处理完成后要把处理结果告知客户端,这个就需要有一个“回调队列”,客户端需要在发送请求的时候同时发送一个回调队列(callback queue)的地址(队列名称),服务器把处理结果发送到“回调队列”客户端就可以收到消息。
当“回调队列”接收到一个响应的时候它无法辨别出这个响应是属于哪个请求的。correlation_id 就是为了解决这个问题而来的。我们给每个请求设置一个独一无二的值。稍后,当我们从回调队列中接收到一个消息的时候,我们就可以查看这条属性从而将响应和请求匹配起来。如果我们接手到的消息的correlation_id是未知的,那就直接销毁掉它,因为它不属于我们的任何一条请求。
消息属性
AMQP协议给消息预定义了一系列的14个属性。大多数属性很少会用到,除了以下几个:
delivery_mode(投递模式):将消息标记为持久的(值为2)或暂存的(除了2之外的其他任何值)。
content_type(内容类型):用来描述编码的mime-type。例如在实际使用中常常使用application/json来描述JOSN编码类型。
reply_to(回复目标):通常用来命名回调队列。
correlation_id(关联标识):用来将RPC的响应和请求关联起来。
RPC如此工作
1、当客户端启动的时候,它创建一个匿名独享的回调队列。
2、在RPC请求中,客户端发送带有两个属性的消息:一个是设置回调队列的 reply_to 属性,另一个是设置唯一值的 correlation_id 属性。将请求发送到一个 rpc_queue 队列中。
3、RPC工作者(又名:服务器)等待请求发送到这个队列中来。当请求出现的时候,它执行他的工作并且将带有执行结果的消息发送给reply_to字段指定的队列。
4、客户端等待回调队列里的数据。当有消息出现的时候,它会检查correlation_id属性。如果此属性的值与请求匹配,将它返回给应用。
rabbitmq 官网:http://www.rabbitmq.com/tutorials/tutorial-six-java.html
rabbimq中文:http://rabbitmq.mr-ping.com/tutorials_with_python/[6]RPC.html
code: http://download.csdn.net/detail/convict_eva/9613560 0 0
- rabbitmq RPC java实现
- RabbitMQ实现RPC(java)
- RabbitMQ实现RPC技术
- RabbitMQ之RPC实现
- rabbitmq rpc java
- RabbitMQ的RPC【JAVA】
- RabbitMQ 之 RPC 初探(Java)
- Spring-rabbitmq 实现RPC 风格调用实例
- springmvc 集成rabbitmq,实现RPC通信方式
- RabbitMQ实现异步及同步RPC
- rabbitmq整合spring实现rpc技术调用
- rabbitmq rpc
- RabbitMQ RPC
- RabbitMQ RPC
- 实现java RPC框架
- 实现java RPC框架
- 实现java RPC框架
- java实现rpc协议
- ecshop二次开发--单点登录
- 【 Perl 】三种方式解决” Wide character in print “
- ARM的异常处理方式简单介绍(16_08_26_01)
- Excel POI导出excel
- python爬虫之51job工作搜索
- rabbitmq RPC java实现
- Oracle DG 相关参数解释
- navicat for mysql注册码,各种版本都有
- 图像超分辨
- POI 输出word列表的内容(Doc2String)
- C语言中的static 详细分析
- RSA加密
- spring4整合Quartz 2.x的版本问题
- Spring MVC之@RequestParam @RequestBody @RequestHeader 等详解