【RabbitMQ】Go语言实现六种消息中间件模型(一)
写在前面
本文是使用Go语言实现各种RabbitMQ的中间件模型
1. 介绍
1.1 什么是MQ
MQ
(Message Quene) : 翻译为 消息队列
,通过典型的 生产者
和消费者
模型,生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,轻松的实现系统间解耦。
别名为 消息中间件
通过利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。
目前市面上有很多消息中间件:RabbitMQ,RocketMQ,Kafka等等...
1.2 什么是RabbitMQ
RabbitMQ
是使用Erlang语言开发的开源消息队列系统,基于AMQP协议
来实现。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。AMQP协议更多用在企业系统内对数据一致性、稳定性和可靠性要求很高的场景,对性能和吞吐量的要求可能比较低了。
1.3 AMQP 协议
AMQP(advanced message queuing protocol)
在2003年时被提出,最早用于解决金融领不同平台之间的消息传递交互问题。
顾名思义,AMQP是一种协议,更准确的说是一种binary wire-level protocol(链接协议)。这是其和JMS的本质差别,AMQP不从API层进行限定,而是直接定义网络交换的数据格式。这使得实现了AMQP的provider天然性就是跨平台的。以下是AMQP协议模型:
2.1 下载
下载rabbitmq过程就省了,可以直接到官网网站下载安装,像安装qq一样。
2.2 引入驱动
驱动
go get github.com/streadway/amqp
连接
var MQ *amqp.Connection // RabbitMQ 链接 func RabbitMQ(connString string) { conn, err := amqp.Dial(connString) if err != nil { panic(err) } MQ = conn }
作者:小生凡一
链接:https://juejin.cn/post/7056340743912161311