快速部署和go客户端使用
# 快速使用 docker 部署单机 RabbitMQ、Go 客户端
# 使用 docker 部署
docker
镜像地址:https://hub.docker.com/_/rabbitmq (opens new window)
通常带有:DOCKER OFFICIAL IMAGE
的都代表是对应的官方镜像
docker pull rabbitmq:3.8-management-apline
1
提示
management
代表是有带管理后台的。
最新版
docker pull rabbitmq:3.11.5-management-alpine
1
# 启动容器
docker run -d --name rmq \
-e RABBITMQ_DEFAULT_USER=wxviurs \
-e RABBITMQ_DEFAULT_PASS=123 \
-p 8082:15672 \
-p 5672:5672 \
rabbitmq:3.11.5-management-alpine
1
2
3
4
5
6
2
3
4
5
6
- 15672 是管理端的端口
注意
此时如果你有开启什么科学上网,请关闭,否则本地会访问不到
# go 客户端库
GitHub 地址:https://github.com/streadway/amqp (opens new window)
使用文档:https://github.com/rabbitmq/rabbitmq-tutorials/tree/main/go (opens new window)
go get github.com/streadway/amqp
1
main.go
package main
import (
"fmt"
"github.com/streadway/amqp"
"log"
)
func main() {
dsn := fmt.Sprintf("amqp://%s:%s@%s:%d", "wxviurs", "123", "127.0.0.1", 5672)
conn, err := amqp.Dial(dsn)
if err != nil {
log.Fatalln(err)
}
defer conn.Close()
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
直接运行无报错即可
使用docker logs rmq
查看日志
代表有客户端进行连接成功
# 简单 demo 草图
graph TD;
A(生产者譬如你的API-Producer)
B(channel-1)
C(channel-2)
D(exchange)
E(Queue-1)
F(Queue-2)
G(Queue-3)
H(channel-1)
I(channel-2)
J(channel-3)
K(Consumer)
A --> B
A --> C
subgraph channels-1
B
C
end
B --> D
C --> D
subgraph 绑定 binding
D --> E
D --> F
D --> G
end
E --> H
F --> I
G --> J
subgraph channels-2
H
I
J
end
H --> K
I --> K
J --> K
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
- 生产者创建
channel
发生消息给ExChange
ExChange
(多种交换机)根据策略binding
队列进行消息投递- 队列具有推、拉模式
- 消费者使用
channel
获取消息,并确认接收或拒绝,重新入列给别的消费者 - 消费者和生产者都可能有多个
编辑 (opens new window)
上次更新: 2023/01/15, 21:39:37