### 簡單模式
一個生產者,一個消費者.

### 特點
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集群架構