RabbitMQ高级使用指南
rabbitmq的常见用法

rabbitmq的常见用法
RabbitMQ是一种开源的消息队列系统,它使用AMQP(高级消息队列协议)作为标准,可以实现消息的可靠传递、解耦和灵活性。
以下是RabbitMQ的一些常见用法:
1. 消息队列:RabbitMQ可以作为消息队列使用,发送方将消息发送到队列中,接收方从队列中获取并处理消息。
这种用法可以实现异步通信和分布式系统中的解耦。
2. 发布/订阅模式:RabbitMQ支持发布/订阅模式,发送方将消息发布到主题或交换机,多个接收方可以订阅该主题或交换机,以获取并处理消息。
这种模式可以实现一对多通信,适用于广播、日志收集等场景。
3. 路由模式:RabbitMQ还支持路由模式,发送方通过特定的路由键将消息发送到交换机,然后交换机将消息路由到一个或多个队列。
接收方可以从对应的队列中获取并处理消息。
这种模式可以实现灵活的路由控制和优先级设置。
4. 工作队列:RabbitMQ可以作为工作队列使用,任务的生产者将任务发布到队列中,多个任务消费者从队列中获取任务并执行。
这种用法可以实现任务的分布式处理和负载均衡。
5. 消息确认机制:RabbitMQ支持消息确认机制,接收方在处理完消息后可以向队列发送确认消息,以确保消息被成功处理。
这种机制可以提高消息处理的可靠性和稳定性。
6. 死信队列和重试机制:RabbitMQ还支持死信队列和重试机制,当接收方在处理消息时发生异常或失败,可以将消息发送到死信队列或进行重试。
这种机制可以提高系统的鲁棒性和容错能力。
总之,RabbitMQ作为一种灵活的消息队列系统,提供了多种用法和功能,适用于各种场景和需求。
RabbitMQ-最完整最全教程

RabbitMQ-Day1学习目标1. 消息队列介绍2. 安装RabbitMQ3. 编写RabbitMQ的入门程序4. RabbitMQ的5种模式讲解5. SpringBoot整合RabbitMQ1消息队列概述1.1消息队列MQMQ全称为Message Queue,消息队列是应用程序和应用程序之间的通信方法。
为什么使用MQ?在项目中,可将一些无需即时返回且耗时的操作提取出来,进行异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。
开发中消息队列通常有如下应用场景:1.2AMQP 和JMSMQ是消息通信的模型;实现MQ的大致有两种主流方式:AMQP、JMS。
1.2.1AMQPAMQP高级消息队列协议,是一个进程间传递异步消息的网络协议,更准确的说是一种binary wire-level protocol(链接协议)。
这是其和JMS的本质差别,AMQP不从API层进行限定,而是直接定义网络交换的数据格式。
1.2.2JMSJMS即Java消息服务(JavaMessage Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。
1.2.3AMQP 与JMS 区别JMS是定义了统一的接口,来对消息操作进行统一;AMQP是通过规定协议来统一数据交互的格式JMS限定了必须使用Java语言;AMQP只是协议,不规定实现方式,因此是跨语言的。
JMS规定了两种消息模式;而AMQP的消息模式更加丰富1.3消息队列产品目前市面上成熟主流的MQ有Kafka 、RocketMQ、RabbitMQ,我们这里对每款MQ做一个简单介绍。
1.4RabbitMQ介绍RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue 高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开发中应用非常广泛。
RabbitMQ使用教程(二)RabbitMQ用户管理,角色管理及权限设置

RabbitMQ使⽤教程(⼆)RabbitMQ⽤户管理,⾓⾊管理及权限设置上⼀篇博客中,我们成功的安装好了RabbitMQ环境,并通过⼀个Java客户端⽰例了解了⽤⽣产者来发布消息,⽤消费者来消费消息。
本篇博客主要讲解下RabbitMQ如何管理⽤户(新增/删除/修改密码),如何给⽤户设置⾓⾊,如何设置⽤户权限,接下来,我们⼀⼀讲解。
1. ⽤户管理1.1 查看⽤户列表RabbitMQ安装完成后,会有⼀个默认⽤户(guest guest),那么我们如何查看⽤户列表呢?第2种⽅式是通过命令查看:cd E:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.15\sbinrabbitmqctl.bat list_users注意:第1个命令中的路径修改为你机器RabblitMQ的安装路径。
1.2 新建⽤户在实际的使⽤过程中,不可能只存在这1个⽤户,有时我们需要新建1个⽤户给到开发⼈员使⽤,⽐如新建个⽤户developer 123456。
仍然有2种⽅式,第1种⽅式是通过管理后台新建:第2种⽅式是通过命令新增:rabbitmqctl.bat add_user developer 123456细⼼的⽹友也许会问为啥⽤户guest的tags是[administrator],⽽新建的⽤户developer的tags是[]呢,别着急,这⼀点会在下⾯的2.⾓⾊设置中讲解。
1.3 删除⽤户在实际使⽤过程中,删除⽤户的场景肯定也是存在的,⽐如我想把刚刚新建的⽤户developer删除掉。
仍然有2种⽅式,第1种⽅式是通过管理后台新建:第2种⽅式是通过命令删除:rabbitmqctl.bat delete_user developer因为后⾯还要使⽤⽤户developer,删除完可以再新增回来。
1.4 修改密码可能有⼈会觉得123456这种密码,太简单了,不安全,我要修改成developer123456。
rabbitmq 使用手册

rabbitmq 使用手册RabbitMQ 是一个开源的消息代理软件,它实现了高效的消息传递机制,可以在分布式系统中进行消息的发布和订阅。
下面是 RabbitMQ 的使用手册的详细精确说明:1. 安装 RabbitMQ:首先,你需要下载并安装 RabbitMQ。
你可以从RabbitMQ 官方网站上下载适合你操作系统的安装包,并按照官方文档中的说明进行安装。
2. 启动 RabbitMQ 服务器:安装完成后,你可以启动 RabbitMQ 服务器。
在大多数操作系统中,你可以通过命令行执行以下命令来启动RabbitMQ:```rabbitmq-server```如果一切正常,你将会看到 RabbitMQ 服务器成功启动的日志信息。
3. 创建和管理队列:RabbitMQ 使用队列来存储消息。
你可以使用 RabbitMQ 的管理界面或者命令行工具来创建和管理队列。
以下是一些常用的队列操作命令:- 创建队列:```rabbitmqadmin declare queue name=<queue_name>```- 查看队列列表:```rabbitmqadmin list queues```- 删除队列:```rabbitmqadmin delete queue name=<queue_name>```4. 发布和消费消息:使用 RabbitMQ,你可以将消息发布到队列中,并从队列中消费消息。
以下是一些常用的消息操作命令:- 发布消息:```rabbitmqadmin publish routing_key=<routing_key>payload=<message>```- 消费消息:```rabbitmqadmin get queue=<queue_name>```- 确认消息已被消费:```rabbitmqadmin ack delivery_tag=<delivery_tag> ```5. 设置消息交换机和绑定:RabbitMQ 使用消息交换机来将消息路由到队列。
rabbitmq的使用方法

rabbitmq的使用方法RabbitMQ是一个开源的消息代理软件,用于实现异步消息传递。
以下是使用RabbitMQ的一些基本方法:1. 安装和配置:首先,你需要从RabbitMQ的官网下载并安装RabbitMQ 服务器。
安装完成后,你可以通过浏览器访问RabbitMQ的管理界面,进行基本的配置。
2. 创建队列:在RabbitMQ中,消息被存储在队列中。
你可以使用RabbitMQ的管理界面或者通过编程的方式创建队列。
例如,使用Python 的pika库,你可以这样创建一个队列:```pythonimport pikaconnection = (('localhost'))channel = ()_declare(queue='hello')()```3. 发送消息:一旦你创建了队列,你就可以开始发送消息到这个队列。
同样使用pika库,你可以这样发送消息:```pythonimport pikaconnection = (('localhost'))channel = ()_publish(exchange='', routing_key='hello', body='Hello World!') ()```4. 接收消息:要接收消息,你需要创建一个消费者来从队列中获取消息。
消费者可以是任何能够处理RabbitMQ消息的应用程序。
例如,你可以创建一个Python消费者来接收消息:```pythonimport pikaconnection = (('localhost'))channel = ()_declare(queue='hello')def callback(ch, method, properties, body):print(f" [x] Received {body}")_consume(queue='hello', on_message_callback=callback,auto_ack=True)print(' [] Waiting for messages. To exit press CTRL+C')_consuming()```5. 确认消息处理:在RabbitMQ中,你可以选择自动确认(auto_ack)或手动确认(manual_ack)消息处理。
rabbitmq basicconsume方法的arguments参数

rabbitmq basicconsume方法的arguments参数RabbitMQ是一款广泛使用的消息队列系统,它提供了许多功能强大的特性,如消息传递、可靠性保证、消息持久化等。
在RabbitMQ中,使用BasicConsume方法可以开始消费队列中的消息。
这个方法接受一些重要的参数,以下是关于这些参数的详细解释和用法指南。
一、参数详解1. consumer_tag:一个唯一标识符,用于标记消费者实例。
每当消费者从队列中消费完一条消息后,它的标识符都需要被重置为空字符串。
2. queue:要消费的队列名称。
这是必须的参数,因为RabbitMQ只会向指定的队列发送消息。
3. autoack:一个布尔值,用于决定是否在收到消息后自动确认并回传给服务器。
如果设置为true,那么消费者在处理完消息后需要调用BasicDeliver方法的第二个参数中的ack方法进行确认。
4. exclusive:一个布尔值,用于决定是否创建一个排他性(Exclusive)的消费者。
如果设置为true,那么这个消费者将只能消费这个队列的消息,而不会影响到其他消费者。
5. no_local:一个布尔值,用于决定是否阻止从本地队列发送消息到这个消费者。
通常这个参数是关闭的(false)。
6. wait:一个布尔值,决定是否等待消费者订阅的队列是否有新消息产生。
当设置为true时,程序将一直等待直到队列中有新消息可用为止。
7. auto_detect:这是一个指示器,当设置为true时,RabbitMQ将自动检测队列的变化并重新订阅。
二、使用示例以下是一个使用BasicConsume方法的简单示例:```pythonimport pikaconnection =pika.BlockingConnection(pika.ConnectionParameters('localhost' ))channel = connection.channel()channel.queue_declare(queue='my_queue')consumer_tag = channel.basic_consume(queue='my_queue', auto_ack=True)while True:# 获取并处理消息...connection.process_data_events()# 当处理完一条消息后,需要调用ack方法确认消息已被处理if consumer_tag:channel.basic_ack(consumer_tag,delivery_tag='<delivery-tag>')else:breakconnection.close()```在这个示例中,我们首先创建了一个到本地RabbitMQ服务器的连接,然后声明了一个名为'my_queue'的队列。
RabbitMQ官方教程一HelloWorld(GOLANG语言实现)

RabbitMQ官⽅教程⼀HelloWorld(GOLANG语⾔实现)介绍RabbitMQ是消息中间件:它接受并转发消息。
您可以将其视为邮局系统:将要发送的邮件放在邮箱中时,可以确保邮递员最终将邮件传递给收件⼈。
以此类推,RabbitMQ是⼀个邮箱,⼀个邮局和⼀个邮递员。
RabbitMQ与邮局之间的主要区别在于,它不处理纸张,⽽是接收,存储和转发数据消息的⼆进制数据。
以下是RabbitMQ和消息发送的术语Producer:⽣产者。
负责⽣产消息。
Queue:队列。
负责存储消息。
队列在RabbitMQ中充当邮箱的⾓⾊,消息传递到RabbitMQ中,只能存储在队列中。
队列受主机内存和磁盘⼤⼩的约束。
本质是⼀个很⼤的消息缓冲区。
许多⽣产者可以将消息发送到⼀个队列,许多消费者可以尝试从⼀个队列接收数据。
Consumer:消费者。
负责处理消息。
** 笔者补充Connect:连接。
⽣产者和RabbitMQ服务之间建⽴的TCP连接。
Channel:信道,⼀条连接可包含多条信道,不同信道之间通信互不⼲扰。
考虑下多线程应⽤场景,每个线程对应⼀条信道,⽽不是对应⼀条连接,这样可以提⾼性能。
body:消息主体,要传递的数据。
exchange:交换器,负责把消息转发到对应的队列。
交换器本⾝没有缓存消息的功能,消息是在队列中缓存的,如果队列不存在,则交换器会直接丢弃消息。
常⽤的有四种类型的交换器:direct、fanout、topic、headers。
不同类型的交换器有不同的交换规则,交换器会根据交换规则把消息转发到对应的队列。
exchangeName:交换器名称,每个交换器对应⼀个名称,发送消息时会附带交换器名称,根据交换器名称选择对应的交换器。
BandingKey:绑定键,⼀个队列可以有⼀个到多个绑定键,通过绑定操作可以绑定交换器和队列,交换器会根据绑定键的名称找到对应的队列。
RotingKey:路由键,发送消息时,需要附带⼀条路由键,交换器会对路由键和绑定键进⾏匹配,如果匹配成功,则消息会转发到绑定键对应的队列中。
rabbitMQ的几条经验

rabbitMQ的几条经验1.必需掌握的指令添加用户:rabbitmqctl add_user rainbird password添加权限:rabbitmqctl set_permissions -p "/" rainbird ".*" ".*" ".*"删除测试用户:rabbitmqctl delete_user guest 所有指令列表(很简单的英文):add_user<UserName> <Password>delete_user<UserName>change_password <UserName><NewPassword>list_usersadd_vhost<VHostPath>delete_vhost<VHostPath>list_vhostsset_permissions [-p<VHostPath>] <UserName> <Regexp><Regexp> <Regexp>clear_permissions [-p<VHostPath>] <UserName>list_permissions [-p <VHostPath>]list_user_permissions<UserName>list_queues [-p <VHostPath>] [<QueueInfoItem> ...]list_exchanges [-p<VHostPath>][<ExchangeInfoItem> ...]list_bindings [-p<VHostPath>] list_connections[<ConnectionInfoItem> ...] 2.vhost / 不能删除删除/以后,新建立的vhost不能正常使用(即便不删除/,新建立的vhost也是不能正常使用).不知道为什么,有待研究.3.关于持久化接收端声明队列和交换机自动建立:$ch->queue_declare($_QUEUE,false,true,false,false);第三个参数设置true保证服务器重启后,自动建立队列第五个参数设置成false防止接收端没连接的时候丢失消息$ch->exchange_declare($EXCHANGE, 'direct', false, true, false);第四个参数设置true保证重启后,自动建立交换机第五个参数设置false防止接收端断开后,交换机被删除发布端声明消息持久:$message = newAMQPMessage(serialize($object), array('content_type' => 'text/plain', 'delivery_mode' => 2)); 同时满足了上面三个条件,就可以保证未接收的消息在服务器意外重启以后依然存在了. 4.持久化的后遗症比如说你初始化了一个队列msgs.你会发现它真的持久了!每次服务器端重启后,通过list_queues命令查看的时候都存在.但是时间久了,这个msgs我们并不需要了,想清除这个队列只能删除它所在的vhost,然后再重建vhost,再设置vhost的权限.rabbitmqctl delete_vhost /rabbitmqctl add_vhost /rabbitmqctlset_permissions -p / rainbird '.*' '.*' '.*' 要注意,如果这个操作过程中有接收端处于连接状态它们不会自动断开,但也不会再收到消息,需要手动重新连接一下. 5.关于修改监听ip和监听端口出于一些需要,比如我们有多个ip,我们希望rabbitmq仅运行在指定的ip上.或者考虑到安全问题,我们希望修改一下rabbitmq的监听端口.默认安装完成以后,在/etc下面会有一个rabbitmq的空目录,这时候我们需要手工创建rabbitmq.conf,并写入相关内容.vi/etc/rabbitmq/rabbitmq.confRABBITMQ_NODE_IP_ADDRES S=0.0.0.0RABBITMQ_NODE_PORT=2222 保存以后重启服务就生效了.6.关于运行接收端cpu100%问题在官方的问题列表里有如下内容:vi +286 amqp_wire.inc293 while ($read < $n && (false !== ($buf = fread($this->sock, $n - $read))))294 {295usleep(50000);296 $read +=strlen($buf);297 $res .=$buf;298 } 为什么要用usleep(50000)呢?实际上usleep(500000)也就是半秒钟.这样就可以使进程看上去cpu占用为0.没想到再降一个数量级也是可以正常的. 7.error_log函数functiondebug_msg($s){ //error_log($s);} 在不同的地方写上debug_msg,最后不用的时候时候,直接注释掉error_log。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
RabbitMQ高级使用指南一、RabbitMQ简介1、介绍RabbitMQ是一个由erlang开发的基于AMQP(Advanced Message Queue )协议的开源实现。
用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面都非常的优秀。
是当前最主流的消息中间件之一。
RabbitMQ官网:2、AMQPAMQP是应用层协议的一个开放标准,为面向消息的中间件设计。
消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,同样,消息使用者也不用知道发送者的存在。
AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
3、系统架构key和已经设置的binding,进行消息路由,将消息投递到一个或多个队列里。
如上图所示:AMQP里主要说两个组件:Exchange和Queue。
绿色的X就是Exchange ,红色的是Queue ,这两者都在Server端,又称作Broker,这部分是RabbitMQ实现的,而蓝色的则是客户端,通常有Producer和Consumer两种类型。
4、几个概念∙P:为Producer,数据的发送方。
∙C:为Consumer,数据的接收方。
∙Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。
∙Queue:消息队列载体,每个消息都会被投入到一个或多个队列。
∙Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来。
∙Routing Key:路由关键字,exchange根据这个关键字进行消息投递。
∙vhost:虚拟主机,一个broker里可以开设多个vhost,用作不同用户的权限分离。
∙channel:消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务。
二、RabbitMQ安装与配置1、安装RabbitMQ是建立在强大的Erlang OTP平台上,因此安装RabbitMQ之前要先安装Erlang。
erlang:/download.htmlRabbitMQ:/download.html注意:∙现在先别装最新的3.6.3 ,本人在安装完最新的版本,queue 队列有问题,降到了3.6.2 就解决了。
∙默认安装的RabbitMQ监听端口是:56722、配置(1)安装完以后erlang需要手动设置ERLANG_HOME 的系统变量。
输入:set ERLANG_HOME=C:\Program Files\erl8.0(2)激活RabbitMQ's Management Plugin使用Rabbit MQ 管理插件,可以更好的可视化方式查看Rabbit MQ 服务器实例的状态,你可以在命令行中使用下面的命令激活。
输入:rabbitmq-plugins.bat enable rabbitmq_management同时,我们也使用rabbitmqctl控制台命令(位于rabbitmq_server-3.6.3\sbin>)来创建用户、密码、绑定权限等。
(3)创建管理用户输入:rabbitmqctl.bat add_userzhangweizhong weizhong1988(4)设置管理员输入:rabbitmqctl.bat set_user_tagszhangweizhong administrator(5)设置权限输入:rabbitmqctl.bat set_permissions -p / zhangweizhong ".*" ".*" ".*"(6)其它命令∙查询用户:rabbitmqctl.bat list_users∙查询vhosts:rabbitmqctl.bat list_vhosts∙启动RabbitMQ服务: net stop RabbitMQ&& net start RabbitMQ4、创建vhosts创建vhosts,在admin页面,点击右侧Virtual Hosts:将刚创建的OrderQueue分配给相关用户。
EasyNetQ 是基于RabbitMQ.Client 基础上封装的开源客户端。
使用非常方便。
地址:/ 。
本篇使用示例代码下载地址:demo示例下载(/files/zhangweizhong/Weiz.RabbitMQ.RPC.rar)RabbitMQ 还有很多其它客户端API,都非常好用。
我们一直用的都是EasyNetQ,所以这里的demo 只介绍EasyNetQ客户端实现。
2、项目结构∙通过nuget安装项目EasyNetQ 相关组件(略)∙增加BusBuilder.cs管道创建类,主要负责链接RabbitMQ。
∙增加IProcessMessage类,定义了一个消息方法,用于消息传递增加Message类,定义了消息传递的实体属性字段等信息增加MQHelper类,用于正在的订阅和发布消息。
(2)RabbitMQ由Producer(生成者)创建一个aspx 页面,增加如下代码:(3)Weiz.Consumer 就是Consumer(消费者)∙新增OrderProcessMessage.cs∙Program 增加如下代码:4、运行(1)启动 Weiz.Consumer (消费者),启动消费者,会自动在RabbitMQ 服务器上创建相关的exchange 和queue 。
Consumer 消费者,使用的是Subscribe (订阅)的模式,所以,Weiz.Consumer客户端启动后,会自动创建connection,生成相关的exchange 和queue。
(2)启动Weiz. Producer 里的TestMQ.aspx 页面,往队列里面写一条消息。
订阅的消费者立马就能拿到这条消息。
至此,C#向RabbitMQ消息队列发送消息已经简单完成。
四、几种Exchange模式本节说些理论的东西——Exchange 的几种模式。
AMQP协议中的核心思想就是生产者和消费者隔离,生产者从不直接将消息发送给队列。
生产者通常不知道是否一个消息会被发送到队列中,只是将消息发送到一个交换机。
先由Exchange来接收,然后Exchange按照特定的策略转发到Queue进行存储。
同理,消费者也是如此。
Exchange 就类似于一个交换机,转发各个消息分发到相应的队列中。
RabbitMQ提供了四种Exchange模式:fanout、direct、topic、header 。
header模式在实际使用中较少,本文只对前三种模式进行比较。
1、Fanout Exchange所有发送到Fanout Exchange的消息都会被转发到与该Exchange 绑定(Binding)的所有Queue上。
Fanout Exchange 不需要处理RouteKey 。
只需要简单的将队列绑定到exchange 上。
这样发送到exchange的消息都会被转发到与该交换机绑定的所有队列上。
类似子网广播,每台子网内的主机都获得了一份复制的消息。
所以,Fanout Exchange 转发消息是最快的。
2、Direct Exchange所有发送到Direct Exchange的消息被转发到RouteKey中指定的Queue。
Direct模式可以使用RabbitMQ自带的Exchange:default Exchange 。
所以不需要将Exchange进行任何绑定(binding)操作。
消息传递时,RouteKey必须完全匹配,才会被队列接收,否则该消息会被抛弃。
3、Topic Exchange这个是RabbitMQ 的实际使用的几个场景,熟悉了这个,基本上RabbitMQ也就了解了。
/tutorials/tutorial-one-dotnet.html至此,RabbitMQ几种Exchange 模式已经介绍完了,实际使用过程中,我们会根据不同的场景,来使用不同的exchange模式。
五、RPC 远程过程调用最近有朋友问我,RabbitMQ RPC 是干嘛的、有什么用。
其实,RabbitMQ RPC就是通过消息队列(Message Queue)来实现RPC的功能,就是客户端向服务端发送定义好的Queue消息,其中携带的消息就应该是服务端将要调用的方法的参数,并使用Propertis告诉服务端将结果返回到指定的Queue。
1、RabbitMQ RPC的特点∙Message Queue把所有的请求消息存储起来,然后处理,和客户端解耦。
∙Message Queue引入新的结点,系统的可靠性会受Message Queue结点的影响。
∙Message Queue是异步单向的消息。
发送消息设计成是不需要等待消息处理的完成。
所以对于有同步返回需求的,Message Queue是个不错的方向。
2、普通PRC的特点∙同步调用,对于要等待返回结果/处理结果的场景,RPC是可以非常自然直觉的使用方式。
当然RPC也可以是异步调用。
∙由于等待结果,客户端会有线程消耗。
如果以异步RPC的方式使用,客户端线程消耗可以去掉。
但不能做到像消息一样暂存消息请求,压力会直接传导到服务端。
3、适用场合说明∙希望同步得到结果的场合,RPC合适。
∙希望使用简单,则RPC;RPC操作基于接口,使用简单,使用方式模拟本地调用。
异步的方式编程比较复杂。
∙不希望客户端受限于服务端的速度等,可以使用Message Queue。
4、RabbitMQ RPC工作流程。