欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

docker快速安装rabbitmq的方法步骤

程序员文章站 2022-07-06 10:58:50
一、获取镜像#指定版本,该版本包含了web控制页面docker pull rabbitmq:management二、运行镜像#方式一:默认guest 用户,密码也是 guestdocker run -...

一、获取镜像

#指定版本,该版本包含了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/

docker快速安装rabbitmq的方法步骤

四、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")

}

docker快速安装rabbitmq的方法步骤

五、拥有消息确认的代码

#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内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!