Linux上安装RabbitMq,6种模式介绍及日常简单使用代码演示

1:安装erlang

由于epel中的erlang版本<19.3,所以我们需要下载新的erlang版本
erlang的安装支持的不好,所以在官方文档中给提供了一种方式来下载,

#下载并安装erlang包,这里下载的是最新的21.2版本
1:wget https://bintray.com/rabbitmq-erlang/rpm/download_file?file_path=erlang%2F21%2Fel%2F7%2Fx86_64%2Ferlang-21.2-1.el7.centos.x86_64.rpm
2:rpm -ivh download_file\?file_path\=erlang%2F21%2Fel%2F7%2Fx86_64%2Ferlang-21.2-1.el7.centos.x86_64.rpm

2:erl验证一下是否安装成功

Linux上安装RabbitMq,6种模式介绍及日常简单使用代码演示

3:官方文档传统的装包方式。

##下包
1:wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.9/rabbitmq-server-3.7.9-1.el7.noarch.rpm
##安装签名key
2:rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
##
3:yum install rabbitmq-server-3.7.9-1.el7.noarch.rpm

4:运行及配置rabbit-mq

1: chkconfig rabbitmq-server on
2:起停重启
systemctl start rabbitmq-server
systemctl stop rabbitmq-server
systemctl restart rabbitmq-server

5:启动UI插件

/sbin/rabbitmq-plugins enable rabbitmq_management
systemctl restart rabbitmq-server

6:解决问题客户端远程无法登陆问题

由于rabbitmq默认guest只允许localhost登陆,所以当你启动客户端后访问ip:15672以guest身份登陆时,会报User can only log in via localhost。
这时候需要我们去检索一下日志。日志的默认文件在/var/log/rabbitmq下
Linux上安装RabbitMq,6种模式介绍及日常简单使用代码演示
这里发现配置文件不存在。
官方文档上说,rabbitmq-conf 和rabbitmq-env.conf如果没有,我们可以手动创建,位置分别在
/etc/rabbitmq下.
rabbitmq-conf在3.7.0以后支持key-value形式的配置文件
当然也兼容之前的经典模式
最小配置为

listeners.tcp.default = 5673

而当我们要解决本章的无法远程登陆问题时,使用另一个参数
Linux上安装RabbitMq,6种模式介绍及日常简单使用代码演示
所以,我们如下配置

listeners.tcp.default = 5673
loopback_users=none

这样当你登陆后就可以看到如下
Linux上安装RabbitMq,6种模式介绍及日常简单使用代码演示
7:rabbitmq使用场景

从概念上将,其实就是生产者消费者模型,观察者模式。
一切的mq都是这样,消费者(consumer)订阅某个队列。生产者(producer)创建消息,然后发布到队列(queue)中,最后将消息发送到监听的消费者。核心目的就是为了解耦,不管是单向解耦还是双向解耦。
入门文档页:https://www.rabbitmq.com/getstarted.html
各种语言的入口介绍都有,这里使用java简单总结一下
客户端你可以使用maven或者gradle
Linux上安装RabbitMq,6种模式介绍及日常简单使用代码演示
六种模式:
1:简单通信模式
一个生产者绑定队列,一个消费者,监听一个队列。
Linux上安装RabbitMq,6种模式介绍及日常简单使用代码演示

2:工作模式
一个生产者绑定队列,多个消费者,监听一个队列。
Linux上安装RabbitMq,6种模式介绍及日常简单使用代码演示
3:发布订阅模式,也可以理解为广播,就是一个消息可以被多人消费。
生产者只将消息发送到交换机,
各个队列绑定到交换机。
多个消费者监听自己到队列。每个队列获取到到消息是相同的。
Linux上安装RabbitMq,6种模式介绍及日常简单使用代码演示
4:路由模式
生产者绑定到交换机
交换机上注册了多个队列,
交换机根据key的不同将不同的消息分发到不同的队列,
消费者监听队列消费,比如vip通道就可以这样做。
Linux上安装RabbitMq,6种模式介绍及日常简单使用代码演示
5:主题模式
和路由模式差不多,只不过更加高级。可以根据主题来分发消息,也就是通配。
比如橙色动物,进Q1也进Q2.
Linux上安装RabbitMq,6种模式介绍及日常简单使用代码演示
6:RPC
就是多了一个回调机制。
客户端启动时,会创建一个匿名的独占回调队列
对于RPC请求,客户端发送带有两个属性的消息: reply_to(设置为回调队列)和correlation_id(设置为每个请求的唯一值)。
请求被发送到rpc_queue队列。
RPC worker(aka:server)正在等待该队列上的请求。当出现请求时,它会执行该作业,并使用reply_to字段中的队列将带有结果的消息发送回客户端。
客户端等待回调队列上的数据。出现消息时,它会检查correlation_id属性。如果它与请求中的值匹配,则返回对应用程序的响应。
Linux上安装RabbitMq,6种模式介绍及日常简单使用代码演示
这里就简单通信模式使用java代码演示一下,剩下的请自行参阅官方文档
生产者调用:
Linux上安装RabbitMq,6种模式介绍及日常简单使用代码演示
控制台结果:
Linux上安装RabbitMq,6种模式介绍及日常简单使用代码演示
消费者调用:
Linux上安装RabbitMq,6种模式介绍及日常简单使用代码演示
控制台结果:
Linux上安装RabbitMq,6种模式介绍及日常简单使用代码演示
send后的UI图效果
Linux上安装RabbitMq,6种模式介绍及日常简单使用代码演示
Receive后的UI结果:
Linux上安装RabbitMq,6种模式介绍及日常简单使用代码演示
至此,Mq的简单应用结束。