博客
关于我
go使用rabbitmq 实践
阅读量:732 次
发布时间:2019-03-21

本文共 3318 字,大约阅读时间需要 11 分钟。

使用 Docker Compose 安装 RabbitMQ

通过 Docker Compose 模拟 RabbitMQ 服务部署

在开始之前,请首先确保你已经安装了 Docker 和 Docker Compose。如果尚未安装,可以通过以下命令安装:

curl -L "https://github.com/docker/compose/releases/download/v3.82.2/docker-compose-$(uname -m)-binary-AMD64" -o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose

接下来,我们将按照以下步骤设置 RabbitMQ 服务。

部署 RabbitMQ

  • 打开文本编辑器,如 Vim。
  • vim docker-compose.yml
    1. 添加以下内容到 docker-compose.yml 文件中:
    2. version: '3'services:  rabbitmq:    image: rabbitmq:management    container_name: rabbitmq    restart: always    hostname: myRabbitmq    ports:      - ${MANAGEMENT_PORT}:15672      - ${RABBITMQ_PORT}:5672    volumes:      - ${RABBITMQ_DATA_FILE}:/var/lib/rabbitmq    environment:      - RABBITMQ_DEFAULT_USER=${RABBITMQ_DEFAULT_USER}      - RABBITMQ_DEFAULT_PASS=${RABBITMQ_DEFAULT_PASS}
      1. 创建一个新的 .env 文件,指定必要的环境变量:
      2. vim .env

        文件内容如下:

        RABBITMQ_PORT=5672MANAGEMENT_PORT=15672RABBITMQ_DATA_FILE=./dataRABBITMQ_DEFAULT_USER=rootRABBITMQ_DEFAULT_PASS=root
        1. 在终端运行以下命令启动服务:
        2. docker-compose up -d

          服务将自动启动,并在后台运行。你可以查看运行状态:

          docker-compose logs -f

          存储和访问配置

          注意到我们将 RabbitMQ 的数据存储在了 ./data 目录,这样在容器下一次启动时,数据不会丢失。你可以访问 RabbitMQ 管理界面:

          地址:http://localhost:15672

          用户名和密码默认为 rootroot,结合环境变量文件设置的值。

          注意:我们建议在生产环境中将用户名和密码更改为安全的值。


          创建 Go 项目

          本节将指导你创建一个简单的 Go 消息队列应用,用于与 RabbitMQ 通话。

          工作目录结构

          创建一个新的工作目录,按照以下结构组织项目:

          project/├── send.go       # 忠诚发送消息├── receive.go    # 接收消息└── main.go       # 主函数入口

          安装依赖

          首先,安装 RabbitMQ Go 客户库。你可以使用以下命令运行:

          go get github.com/streadway/amqp

          编写代码

          package mainimport (    "fmt"    "github.com/streadway/amqp"    "log")func failOnError(err error, msg string) {    if err != nil {        log.Fatalf("%s: %s", msg, err)    }}// 发送消息func main() {    // 连接 RabbitMQ 服务器    conn, err := amqp.Dial("amqp://test:test@127.0.0.1:5672//test")    failOnError(err, "Failed to connect to RabbitMQ")    defer conn.Close()    // 创建消息通道    ch, err := conn.Channel()    failOnError(err, "Failed to open a channel")    defer ch.Close()    // 声明一个队列    q, err := ch.QueueDeclare("test", false, false, false, false, nil)    failOnError(err, "Failed to declare a queue")    // 发送消息    body := "你好"    err = ch.Publish("", q.Name, false, false, amqp.Publishing{        ContentType: "text/plain",        Body:      []byte(body),    })    failOnError(err, "Failed to publish a message")    fmt.Println("发送消息成功")}
          package mainimport (    "fmt"    "github.com/streadway/amqp"    "log")func failOnError(err error, msg string) {    if err != nil {        log.Fatalf("%s: %s", msg, err)    }}// 接收消息func main() {    // 连接 RabbitMQ 服务器    conn, err := amqp.Dial("amqp://test:test@127.0.0.1:5672//test")    failOnError(err, "Failed to connect to RabbitMQ")    defer conn.Close()    // 创建消息通道    ch, err := conn.Channel()    failOnError(err, "Failed to open a channel")    defer ch.Close()    // 声明一个队列    q, err := ch.QueueDeclare("test", false, false, false, false, nil)    failOnError(err, "Failed to declare a queue")    // 设置消息接收模式    ch.Qos(1, 1, false)    // 开始接收消息    msg, err := ch.Receive()    for {        body, err := msg.Body()        if err != nil {            break        }        fmt.Printf("接收消息:%s\n", string(body))    }    fmt.Printf("接收消息成功\n")}

          编译和运行

          在项目根目录下,编译各个组件。

          go build receive.gogo build send.go

          通过以上步骤,你已经掌握了如何使用 Docker Compose 安装 RabbitMQ,并创建了一个简单的 Go 消息队列应用。接下来可以根据实际需求扩展应用功能,或者添加更多消费者来处理 RabbitMQ 消息。

    转载地址:http://cyugz.baihongyu.com/

    你可能感兴趣的文章
    Mysql-存储引擎
    查看>>
    mysql-开启慢查询&所有操作记录日志
    查看>>
    MySQL-数据目录
    查看>>
    MySQL-数据页的结构
    查看>>
    MySQL-架构篇
    查看>>
    MySQL-索引的分类(聚簇索引、二级索引、联合索引)
    查看>>
    Mysql-触发器及创建触发器失败原因
    查看>>
    MySQL-连接
    查看>>
    mysql-递归查询(二)
    查看>>
    MySQL5.1安装
    查看>>
    mysql5.5和5.6版本间的坑
    查看>>
    mysql5.5最简安装教程
    查看>>
    mysql5.6 TIME,DATETIME,TIMESTAMP
    查看>>
    mysql5.6.21重置数据库的root密码
    查看>>
    Mysql5.6主从复制-基于binlog
    查看>>
    MySQL5.6忘记root密码(win平台)
    查看>>
    MySQL5.6的Linux安装shell脚本之二进制安装(一)
    查看>>
    MySQL5.6的zip包安装教程
    查看>>
    mysql5.7 for windows_MySQL 5.7 for Windows 解压缩版配置安装
    查看>>
    Webpack 基本环境搭建
    查看>>