`

rabbitmq-rpc

 
阅读更多

转自:http://backend.blog.163.com/blog/static/2022941262014315104836716/

在发送消息的时候也能够带上一些属性,以支持类似rpc的功能。在rabbitmq文档例子里,实现rpc功能实际上就是client发送带属性的消息,属性中包含回调tmp_queue名和用于标示该消息的correlationId。server端收到消息后从属性中取得tmp_queue,将处理的结果放在该queue中,并将拿到的correlationId作为结果消息的属性一并发送。client端有个while循环一直阻塞并获取tmp_queue消息,直到拿到响应消息并匹配correlationId一致后退出循环,表示拿到了rpc的响应。采用此方式实现rpc的好处是一旦一个server太慢,可以简单的启动一个新的server去读取queue并响应即可。
//创建消息属性(replayTo属性常用于指定回调queue,correlationId属性常用于指定在大量回调queue中的消息哪个是属于该发送消息的回复。在rabbitmq中这些属性没有特殊作用)
BasicProperties props = new BasicProperties().builder().correlationId("id1").replyTo("temp_queue").build();
//发送时带上消息属性(AMQP协议有14种属性之多,但是实际上很少有用)
channel.basicPublish("", QUEUE_NAME, props, message.getBytes());
 
//接收消息时获取属性:
QueueingConsumer.Delivery delivery = consumer.nextDelivery();
BasicProperties props = delivery.getProperties();
分享到:
评论

相关推荐

    Python库 | rabbitmq-rpc-0.1.7.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:rabbitmq-rpc-0.1.7.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    rabbitmq-rpc-consumer-go:用于RabbitMQ RPC的Go模块(消费者)

    本文将深入探讨 `rabbitmq-rpc-consumer-go`,这是一个专门用于RabbitMQ RPC的Go语言模块,主要关注其作为消费者的实现。 在Go语言中,`rabbitmq-rpc-consumer-go` 模块为开发者提供了方便的方式来创建RabbitMQ的...

    基于rabbitmq的rpc调用的3中方式实战-rabbitmq-rpc.zip

    在本实战教程中,我们将探讨基于 RabbitMQ 的远程过程调用(RPC,Remote Procedure Call)的三种实现方式。 1. **基于工作者模式的RPC** 在这种模式下,客户端发送请求到RabbitMQ的特定交换器,然后这个请求被路由...

    rabbitmq-server-windows-3.9.1.zip

    6. **RPC(Remote Procedure Call)**:通过RabbitMQ实现简单的请求-响应模式,模拟远程调用。 在Windows环境下,RabbitMQ的使用和配置与其他平台类似,只是需要关注一些特定的Windows服务管理细节。通过这个压缩包...

    rabbitmq-server-3.8.11.exe

    你是否遇到过两个(多个)系统间需要通过定时任务...消息服务擅长于解决多系统、异构系统间的数据交换(消息通知/通讯)问题,你也可以把它用于系统间服务的相互调用(RPC)。RabbitMQ就是当前最主流的消息中间件之一。

    Laravel开发-rabbitmq-client

    在本文中,我们将深入探讨如何在 Laravel 开发环境中使用 `rabbitmq-client`,这是一个基于 AMQP 协议的 RabbitMQ 客户端,为 Laravel 和 Lumen 提供了异步处理和 Direct RPC(远程过程调用)接口。RabbitMQ 是一个...

    rabbitmq-chat:基于RabbitMQ的CLI聊天程序

    = 1.7 安装了 安装在本地主机上的如何建造解决Maven依赖$ mvn dependency:copy-dependencies使用maven mvn构建jar $ mvn package怎么跑启动Rabbitmq经纪人从target文件夹中生成的jar运行RpcServer $ java -cp target...

    spring-rabbitmq-demo

    当我们结合Spring与RabbitMQ时,可以创建一个高效且灵活的异步通信和远程过程调用(RPC)系统。下面,我们将深入探讨"spring-rabbitmq-demo"项目中的关键知识点。 首先,`pom.xml`文件是Maven项目的核心配置文件,...

    java队列源码-rabbitmq-repository:RabbitMQ消息队列学习的源码记录

    rabbitmq-java-rpc rabbitmq PRC通信示例 rabbitmq-spring-helloworld spring boot 使用rabbitmq的第一个demo rabbitmq-spring-work-queue spring boot使用rabbitmq的队列示例 rabbitmq-spring-fanout spring boot...

    rabbitmq实战-rabbitmq-action.zip

    2.5 RPC模式:远程过程调用,通过RabbitMQ实现客户端与服务端的异步通信。 三、RabbitMQ实战应用 3.1 Spring整合:使用Spring框架集成RabbitMQ,包括配置、生产者和消费者组件的创建,以及消息模板的使用。 3.2 ...

    MQ技术分享-RabbitMQ-11

    - MQ提供消息传递和消息队列模型,允许系统在分布式环境中扩展进程间通信,无需关心远程过程调用(RPC)和网络通信细节。 - 消息中间件的主要特性包括有保证的消息发送,提高了系统的灵活性和扩展性。 2. **消息...

    《RabbitMQ实战指南》知识点总结-RabbitMQ-Demo.zip

    - **RPC(Remote Procedure Call)**: 通过消息实现客户端调用远程服务的功能。 8. **高级特性** - **Message Acknowledgements**: 消费者确认消息处理成功,RabbitMQ才能安全地删除消息。 - **Exclusive Queues...

    RabbitMQ-最完整最全教程.rar

    4. **RPC模式**:RabbitMQ可实现基于消息的远程过程调用,允许服务间异步通信。 5. **插件系统**:RabbitMQ提供了丰富的插件,如管理界面、监控工具等,增强其功能。 **五、实战应用** 1. **微服务解耦**:在...

    rabbitmq-demo.rar

    RabbitMQ原生最详细demo,深度理解RabbitMQ原理,...RabbitMQ提供了6种消息模型,但是第6种其实是RPC,并不是MQ,因此不予学习。那么也就剩下5种。 但是其实3、4、5这三种都属于订阅模型,只不过进行路由的方式不同

    rabbitmq客户端 for Linux系统

    if (amqp_get_rpc_reply(conn) != AMQP_RESPONSE_OK) { // 错误处理 } ``` 在RabbitMQ-C中,你需要处理各种AMQP协议相关的数据结构和函数,如`amqp_connection_state_t`、`amqp_socket_t`等,以及用于发送和接收...

    Lnk-RPC使用文档1

    首先,MQ(如RabbitMQ)实现的RPC可以将请求压力缓存到消息队列,逐步释放处理压力,使得处理者能够按照自己的节奏来处理请求,同时具有防止请求丢失的缓冲作用。然而,MQ引入了额外的复杂性,例如服务的高可用性...

    spring集成rabbitmq实现rpc

    本文将详细讲解如何在Spring项目中集成RabbitMQ,实现基于RPC(远程过程调用)的通信模式。 首先,我们需要在项目中引入Spring AMQP库,这是Spring对RabbitMQ的官方支持。可以通过在pom.xml文件中添加以下Maven依赖...

    RabbitMQ-最完整最全教程

    RabbitMQ提供了六种工作模式:简单模式、work模式、Publish/Subscribe发布与订阅模式、Routing路由模式、Topics主题模式和RPC远程调用模式。 RabbitMQ的安装及配置包括了安装说明和用户以及VirtualHosts的配置。...

    重构的RPC方法库,使用java反射进行方法调用,使用fastjson进行数据序列化,支持多RPC服务的负载均衡

    这个压缩包文件"rabbitmq-rpc-master"似乎是一个基于Java实现的RPC框架,它经过了重构,旨在提高性能和可维护性。以下是对该框架关键特性的详细解释: 1. **Java反射机制**:Java反射是Java语言的一个强大功能,它...

    rabbitmq RPC java 实现

    RabbitMQ作为一款强大的开源消息队列系统,被广泛用于实现异步处理、解耦系统组件以及RPC(远程过程调用)等场景。本篇文章将深入探讨如何使用Java实现基于RabbitMQ的RPC。 首先,我们要理解RabbitMQ的基本概念。...

Global site tag (gtag.js) - Google Analytics