博客
关于我
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 调优/优化的 101 个建议!
    查看>>
    mysql 转义字符用法_MySql 转义字符的使用说明
    查看>>
    mysql 输入密码秒退
    查看>>
    mysql 递归查找父节点_MySQL递归查询树状表的子节点、父节点具体实现
    查看>>
    mysql 通过查看mysql 配置参数、状态来优化你的mysql
    查看>>
    mysql 里对root及普通用户赋权及更改密码的一些命令
    查看>>
    Mysql 重置自增列的开始序号
    查看>>
    mysql 锁机制 mvcc_Mysql性能优化-事务、锁和MVCC
    查看>>
    MySQL 错误
    查看>>
    mysql 随机数 rand使用
    查看>>
    MySQL 面试题汇总
    查看>>
    MySQL 面试,必须掌握的 8 大核心点
    查看>>
    MySQL 高可用性之keepalived+mysql双主
    查看>>
    MySQL 高性能优化规范建议
    查看>>
    mysql 默认事务隔离级别下锁分析
    查看>>
    Mysql--逻辑架构
    查看>>
    MySql-2019-4-21-复习
    查看>>
    mysql-5.6.17-win32免安装版配置
    查看>>
    mysql-5.7.18安装
    查看>>
    MySQL-Buffer的应用
    查看>>