wxvirus wxvirus
首页
  • Go文章

    • Go语言学习
  • Rust

    • Rust学习
  • Java

    • 《Java》
  • Python文章

    • Python
  • PHP文章

    • PHP设计模式
  • 学习笔记

    • 《Git》
  • HTML
  • CSS
  • JS
  • 技术文档
  • GitHub技巧
  • 刷题
  • 博客搭建
  • 算法学习
  • 架构设计
  • 设计模式
  • 学习
  • 面试
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

无解的lifecycle

let today = new Beginning()
首页
  • Go文章

    • Go语言学习
  • Rust

    • Rust学习
  • Java

    • 《Java》
  • Python文章

    • Python
  • PHP文章

    • PHP设计模式
  • 学习笔记

    • 《Git》
  • HTML
  • CSS
  • JS
  • 技术文档
  • GitHub技巧
  • 刷题
  • 博客搭建
  • 算法学习
  • 架构设计
  • 设计模式
  • 学习
  • 面试
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • C&C++

  • PHP

  • Python

  • Go

    • go基础

    • go核心

    • 网络编程

    • gowebsocket

    • gocasbin

    • K8S

    • rabbitmq

      • rabbitmq了解
      • 快速部署和go客户端使用
        • 使用 docker 部署
          • 启动容器
        • go 客户端库
        • 简单 demo 草图
      • 生产者发送消息
      • 交换机
    • 框架相关

    • go-zero

    • kafka

    • rpc

    • 性能相关

  • microservice

  • rust

  • Java

  • 学习笔记

  • 后端
  • Go
  • rabbitmq
wxvirus
2023-01-15

快速部署和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
  • 15672 是管理端的端口

image-20230106233656794

注意

此时如果你有开启什么科学上网,请关闭,否则本地会访问不到

image-20230106234127444

# 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

直接运行无报错即可

使用docker logs rmq查看日志

image-20230106235203948

代表有客户端进行连接成功

# 简单 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
  1. 生产者创建channel发生消息给ExChange
  2. ExChange(多种交换机)根据策略binding队列进行消息投递
  3. 队列具有推、拉模式
  4. 消费者使用channel获取消息,并确认接收或拒绝,重新入列给别的消费者
  5. 消费者和生产者都可能有多个
编辑 (opens new window)
#deploy
上次更新: 2023/01/15, 21:39:37
rabbitmq了解
生产者发送消息

← rabbitmq了解 生产者发送消息→

最近更新
01
centos7安装redis6文档记录
02-14
02
portainer的安装
02-11
03
gin自定义验证器和翻译器
02-11
更多文章>
Theme by Vdoing | Copyright © 2021-2023 wxvirus
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式