博客
关于我
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/

    你可能感兴趣的文章
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_插入时如果目标表中已存在该数据则自动改为更新数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0058
    查看>>
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_更新时如果目标表中不存在记录就改为插入数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0059
    查看>>
    NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
    查看>>
    NIFI1.21.0_Postgresql和Mysql同时指定库_指定多表_全量同步到Mysql数据库以及Hbase数据库中---大数据之Nifi工作笔记0060
    查看>>
    NIFI1.21.0最新版本安装_连接phoenix_单机版_Https登录_什么都没改换了最新版本的NIFI可以连接了_气人_实现插入数据到Hbase_实际操作---大数据之Nifi工作笔记0050
    查看>>
    NIFI1.21.0最新版本安装_配置使用HTTP登录_默认是用HTTPS登录的_Https登录需要输入用户名密码_HTTP不需要---大数据之Nifi工作笔记0051
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增加修改实时同步_使用JsonPath及自定义Python脚本_03---大数据之Nifi工作笔记0055
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_插入修改删除增量数据实时同步_通过分页解决变更记录过大问题_01----大数据之Nifi工作笔记0053
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表或全表增量同步_实现指定整库同步_或指定数据表同步配置_04---大数据之Nifi工作笔记0056
    查看>>
    NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现update数据实时同步_实际操作05---大数据之Nifi工作笔记0044
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_生成插入Sql语句_实际操作02---大数据之Nifi工作笔记0041
    查看>>
    NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
    查看>>
    NIFI从MySql中离线读取数据再导入到MySql中_不带分页处理_01_QueryDatabaseTable获取数据_原0036---大数据之Nifi工作笔记0064
    查看>>
    NIFI从MySql中离线读取数据再导入到MySql中_无分页功能_02_转换数据_分割数据_提取JSON数据_替换拼接SQL_添加分页---大数据之Nifi工作笔记0037
    查看>>
    NIFI从Oracle11G同步数据到Mysql_亲测可用_解决数据重复_数据跟源表不一致的问题---大数据之Nifi工作笔记0065
    查看>>