rabbitmq

在所有的消息系统中,其基本组成一队就是生产者、消费者、消息组件, 消息组件的功能就是消息的缓存

但是在rabbitmq中 , 消息组件的组成: Exchange:交换空间管理所有的队列

rabbitmq 核心概念:

  1. Queue:数据队列
  2. RoutingKey:如果说有的 RoutingKey 都一样, 那么就属于广播消息;而不一样,怎表示点对点消息
  3. Broker :消息队列服务主机
  4. Exchange: 消息交换机,它指定消息按什么规则路由到哪个队列
  5. Queue: 消息队列载体,每个消息都会被投入到一个或多个队列
  6. Binding:绑定,把exchange 和 queue 按照路由规则绑定起来
  7. Routing Key:路由关键字,exchange 根据这个关键字进行消息投递
  8. vhost:虚拟主机, 一个broker里可以设多个vhost , 实现用户权限的分离
  9. producer:消息生产者
  10. consumer: 消息消费者
  11. channel :消息通道 , 在客户端的每一个连接里,可以建多个channel,每个channel 代表一个会话任务

在rabbitmq中有一个虚拟主机的概念(Vhost), 所谓的虚拟主机可以理解为不同的用户空间,也就是说各个用户可以有自己的队列信息, 有自己的操作用户

rabbit mq 系统架构图

当程序开发时,可能不止用到一个队列,可能有订单的队列、消息的队列、任务的队列等等,那么就需要给不同的queue发信息,那么和每一个队列连接的这个概念,就叫Channel

再往下来,当我们开发的时候还有时候会用到这样一种功能,就是当我发送一条消息,需要让几个queue都收到,那么怎么解决这个问题呢,难道我要给每一个queue发送一次消息?那岂不是浪费带宽又浪费资源,我们能想到什么办法呢,当然是我们发送给RabbitMQ服务器一次,然后让RabbitMQ服务器自己解析需要给哪个Queue发,那么Exchange就是干这件事的

但是我们给Exchange发消息,他怎么知道给哪个Queue发呢?这里就用到了RoutingKey和BindingKey

BindingKey是Exchange和Queue绑定的规则描述,这个描述用来解析当Exchange接收到消息时,Exchange接收到的消息会带有RoutingKey这个字段,Exchange就是根据这个RoutingKey和当前Exchange所有绑定的BindingKey做匹配,如果满足要求,就往BindingKey所绑定的Queue发送消息,这样我们就解决了我们向RabbitMQ发送一次消息,可以分发到不同的Queue的过程

 rabbitmq 依靠的开发语言是ErLang,所以如果想使用RabbitMQ,首先一定要配置开发环境, 测试环境是否安装成功,在命令行输入 erl:

退出: "halt()." 命令

 http://erlang.org/download/otp_win64_18.3.exe。

新建系统变量:变量名 ERLANG_HOME 变量值 D:softInstallerl8.3(Erlang安装目录)

添加到PATH:%ERLANG_HOME%in;

http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.9/rabbitmq-server-3.6.9.exe

新建系统变量:变量名 RABBITMQ_SERVER 变量值 D:softInstall abbitMQ abbitmq_server-3.6.9(RabbitMQ Server安装目录)

添加到PATH:%RABBITMQ_SERVER%sbin;

以管理员身份运行cmd.exe,进入目录D:softInstall abbitMQ abbitmq_server-3.6.9sbin(RabbitMQ Server安装目录),运行cmd命令:rabbitmq-plugins.bat enable rabbitmq_management

以管理员身份运行cmd.exe,运行命令:net stop RabbitMQ && net start RabbitMQ。启动RabbitMQ Server,在浏览器输入地址:http://localhost:15672,输入默认账号:guest  密码:guest,就能进入RabbitMQ界面了。

原文地址:https://www.cnblogs.com/gaizhongfeng/p/7798384.html