### 简单模式
一个生产者,一个消费者.

### 特点
1. 不需要声明交换机(使用AMQP default).
2. 不需要绑定队列.
3. 不需要routingKey和bindingKey.
4. 需要声明队列.
### 封装simple模式
~~~
package rabbitmq
import (
"fmt"
"github.com/streadway/amqp"
)
const MQURL = "amqp://guest:guest@localhost:5672"
type RabbitMQ struct {
conn *amqp.Connection
channel *amqp.Channel
Exchange string //交换机名
Queue string //队列名
Key string //路由名
AMQPUrl string //连接URL
}
//创建rabbit实例
func New(exchange, queue, key string) *RabbitMQ {
r := &RabbitMQ{
Exchange: exchange,
Queue: queue,
Key: key,
AMQPUrl: MQURL,
}
var err error
r.conn, err = amqp.Dial(r.AMQPUrl) // :=不能用于结构体赋值
r.FailOnErr(err, "创建Connection失败")
r.channel, err = r.conn.Channel()
r.FailOnErr(err, "创建channel失败")
return r
}
//处理错误
func (r *RabbitMQ) FailOnErr(err error, msg string) {
if err != nil {
fmt.Printf("%s : %s\n", err, msg)
return
}
}
func NewSimpleRabbitMQ(queue string) *RabbitMQ {
return New("", queue, "")
}
//发送消息
func (r *RabbitMQ) PublishSimple(message string) {
_, err := r.channel.QueueDeclare(r.Queue, true, false, false, false, nil)
if err != nil {
fmt.Println(err)
return
}
r.channel.Publish(r.Exchange, r.Queue, false, false, amqp.Publishing{
ContentType: "text/plain",
Body: []byte(message),
})
}
//消费消息
func (r *RabbitMQ) ConsumeSimple() {
_, err := r.channel.QueueDeclare(r.Queue, true, false, false, false, nil)
if err != nil {
fmt.Println(err)
return
}
msg, err := r.channel.Consume(r.Queue, "", true, false, false, false, nil)
forever := make(chan struct{})
go func() {
for v := range msg {
fmt.Println(string(v.Body))
}
}()
fmt.Println("等待接受消息...")
<-forever
}
~~~
- 定义和特征
- 安装
- 基本概念
- 插件管理
- 核心概念
- virtual hosts
- connextion
- exchange
- channel
- queue
- binding
- 工作模式
- simple模式
- work模式
- 订阅模式
- routing模式
- topic模式
- QOS服务质量
- =====分割线=====
- RabbitMQ核心概念
- 初识RabbitMQ
- 什么是AMQP高级消息队列协议
- AMQP核心概念
- RabbitMQ整体架构模型
- 命令行与管控台操作
- RabbitMQ消息生产与消费
- RabbitMQ交换机详解
- 什么是exchange
- direct
- topic
- fanout
- headers
- RabbitMQ绑定,队列,虚拟主机,消息
- RabbitMQ高级特性
- 消息保障100%投递成功
- 幂等性概念及业界主流解决方案
- confirm确认消息
- return返回消息
- 自定义消费者
- 消费端限流策略
- 消费端ack与重回队列机制
- TTL消息
- 死信队列
- RabbitMQ集群架构
