• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    docker快速安装rabbitmq的方法步骤

    一、获取镜像

    #指定版本,该版本包含了web控制页面
    docker pull rabbitmq:management

    二、运行镜像

    #方式一:默认guest 用户,密码也是 guest
    docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq:management
    
    #方式二:设置用户名和密码
    docker run -d --hostname my-rabbit --name rabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password -p 15672:15672 -p 5672:5672 rabbitmq:management

    三、访问ui页面

    http://localhost:15672/

    四、golang案例

    #producer生产者代码
    package main
    
    import (
      "fmt"
    
      "log"
    
      "github.com/streadway/amqp"
    )
    
    const (
      //AMQP URI
    
      uri = "amqp://guest:guest@10.0.0.11:5672/" // 10.0.0.11为主机ip
    
      //Durable AMQP exchange name
    
      exchangeName = ""
    
      //Durable AMQP queue name
    
      queueName = "test-queues"
    
      //Body of message
    
      bodyMsg string = "hello angel"
    )
    
    //如果存在错误,则输出
    
    func failOnError(err error, msg string) {
    
      if err != nil {
    
        log.Fatalf("%s: %s", msg, err)
    
        panic(fmt.Sprintf("%s: %s", msg, err))
    
      }
    
    }
    
    func main() {
    
      //调用发布消息函数
    
      publish(uri, exchangeName, queueName, bodyMsg)
    
      log.Printf("published %dB OK", len(bodyMsg))
    
    }
    
    //发布者的方法
    
    //@amqpURI, amqp的地址
    
    //@exchange, exchange的名称
    
    //@queue, queue的名称
    
    //@body, 主体内容
    
    func publish(amqpURI string, exchange string, queue string, body string) {
    
      //建立连接
    
      log.Printf("dialing %q", amqpURI)
    
      connection, err := amqp.Dial(amqpURI)
    
      failOnError(err, "Failed to connect to RabbitMQ")
    
      defer connection.Close()
    
      //创建一个Channel
    
      log.Printf("got Connection, getting Channel")
    
      channel, err := connection.Channel()
    
      failOnError(err, "Failed to open a channel")
    
      defer channel.Close()
    
      log.Printf("got queue, declaring %q", queue)
    
      //创建一个queue
    
      q, err := channel.QueueDeclare(
    
        queueName, // name
    
        false, // durable
    
        false, // delete when unused
    
        false, // exclusive
    
        false, // no-wait
    
        nil, // arguments
    
      )
    
      failOnError(err, "Failed to declare a queue")
    
      log.Printf("declared queue, publishing %dB body (%q)", len(body), body)
    
      // Producer只能发送到exchange,它是不能直接发送到queue的
    
      // 现在我们使用默认的exchange(名字是空字符)这个默认的exchange允许我们发送给指定的queue
    
      // routing_key就是指定的queue名字
    
      err = channel.Publish(
    
        exchange, // exchange
    
        q.Name, // routing key
    
        false, // mandatory
    
        false, // immediate
    
        amqp.Publishing{
    
          Headers: amqp.Table{},
    
          ContentType: "text/plain",
    
          ContentEncoding: "",
    
          Body: []byte(body),
        })
    
      failOnError(err, "Failed to publish a message")
    
    }

    五、拥有消息确认的代码

    #producer
    package main
    
    import (
      "fmt"
      "github.com/streadway/amqp"
      "log"
      "os"
      "strings"
    )
    
    const (
      //AMQP URI
      uri = "amqp://guest:guest@10.0.0.11:5672/"
      //Durable AMQP exchange name
      exchangeName = ""
      //Durable AMQP queue name
      queueName = "test-queues-acknowledgments"
    )
    
    //如果存在错误,则输出
    func failOnError(err error, msg string) {
      if err != nil {
        log.Fatalf("%s: %s", msg, err)
        panic(fmt.Sprintf("%s: %s", msg, err))
      }
    }
    
    func main() {
      bodyMsg := bodyFrom(os.Args)
      //调用发布消息函数
      publish(uri, exchangeName, queueName, bodyMsg)
      log.Printf("published %dB OK", len(bodyMsg))
    }
    
    func bodyFrom(args []string) string {
      var s string
      if (len(args) < 2) || os.Args[1] == "" {
        s = "hello angel"
      } else {
        s = strings.Join(args[1:], " ")
      }
      return s
    }
    
    //发布者的方法
    //@amqpURI, amqp的地址
    //@exchange, exchange的名称
    //@queue, queue的名称
    //@body, 主体内容
    func publish(amqpURI string, exchange string, queue string, body string) {
      //建立连接
      log.Printf("dialing %q", amqpURI)
      connection, err := amqp.Dial(amqpURI)
      failOnError(err, "Failed to connect to RabbitMQ")
      defer connection.Close()
    
      //创建一个Channel
      log.Printf("got Connection, getting Channel")
      channel, err := connection.Channel()
      failOnError(err, "Failed to open a channel")
      defer channel.Close()
    
      log.Printf("got queue, declaring %q", queue)
    
      //创建一个queue
      q, err := channel.QueueDeclare(
        queueName, // name
        false,   // durable
        false,   // delete when unused
        false,   // exclusive
        false,   // no-wait
        nil,    // arguments
      )
      failOnError(err, "Failed to declare a queue")
    
      log.Printf("declared queue, publishing %dB body (%q)", len(body), body)
    
      // Producer只能发送到exchange,它是不能直接发送到queue的。
      // 现在我们使用默认的exchange(名字是空字符)。这个默认的exchange允许我们发送给指定的queue。
      // routing_key就是指定的queue名字。
      err = channel.Publish(
        exchange, // exchange
        q.Name,  // routing key
        false,  // mandatory
        false,  // immediate
        amqp.Publishing{
          Headers:     amqp.Table{},
          ContentType:   "text/plain",
          ContentEncoding: "",
          Body:      []byte(body),
        })
      failOnError(err, "Failed to publish a message")
    }

    到此这篇关于docker快速安装rabbitmq的方法步骤的文章就介绍到这了,更多相关docker安装rabbitmq内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    上一篇:Docker下安装zookeeper(单机和集群)
    下一篇:浅谈Linux下修改/设置环境变量JAVA_HOME的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    docker快速安装rabbitmq的方法步骤 docker,快速,安装,rabbitmq,