zoukankan      html  css  js  c++  java
  • Windows下RabbitMQ安装及配置流程

    记录下本人在win10环境下安装RabbitMQ的步骤

    第一步:下载并安装erlang

        • 下载完是这么个东西:

    • windows 

    启动:net stop RabbitMQ && net start RabbitMQ

    安装成功之后:可访问http://localhost:15672 

    参考项目:https://www.cnblogs.com/ericli-ericli/p/5902270.html

      练手rabbit项目: https://github.com/masnun/gopher-and-rabbit

    项目代码 

    消费者 consumer/main.go

    
    
    package main

    import (
    "encoding/json"
    "github.com/masnun/gopher-and-rabbit"
    "github.com/streadway/amqp"
    "log"
    "os"
    )

    func handleError(err error, msg string) {
    if err != nil {
    log.Fatalf("%s: %s", msg, err)
    }

    }

    func main() {
    conn, err := amqp.Dial(gopher_and_rabbit.Config.AMQPConnectionURL)
    handleError(err, "Can't connect to AMQP")
    defer conn.Close()

    amqpChannel, err := conn.Channel()
    handleError(err, "Can't create a amqpChannel")

    defer amqpChannel.Close()

    queue, err := amqpChannel.QueueDeclare("add", true, false, false, false, nil)
    handleError(err, "Could not declare `add` queue")

    err = amqpChannel.Qos(1, 0, false)
    handleError(err, "Could not configure QoS")

    messageChannel, err := amqpChannel.Consume(
    queue.Name,
    "",
    false,
    false,
    false,
    false,
    nil,
    )
    handleError(err, "Could not register consumer")

    stopChan := make(chan bool)

    go func() {
    log.Printf("Consumer ready, PID: %d", os.Getpid())
    for d := range messageChannel {
    log.Printf("Received a message: %s", d.Body)

    addTask := &gopher_and_rabbit.AddTask{}

    err := json.Unmarshal(d.Body, addTask)

    if err != nil {
    log.Printf("Error decoding JSON: %s", err)
    }

    log.Printf("Result of %d + %d is : %d", addTask.Number1, addTask.Number2, addTask.Number1+addTask.Number2)

    if err := d.Ack(false); err != nil {
    log.Printf("Error acknowledging message : %s", err)
    } else {
    log.Printf("Acknowledged message")
    }

    }
    }()

    // Stop for program termination
    <-stopChan

    生产者 publisher/main.go

    package main
    
    import (
        "encoding/json"
        "github.com/masnun/gopher-and-rabbit"
        "github.com/streadway/amqp"
        "log"
        "math/rand"
        "time"
    )
    
    func handleError(err error, msg string) {
        if err != nil {
            log.Fatalf("%s: %s", msg, err)
        }
    
    }
    
    func main() {
        conn, err := amqp.Dial(gopher_and_rabbit.Config.AMQPConnectionURL)
        handleError(err, "Can't connect to AMQP")
        defer conn.Close()
    
        amqpChannel, err := conn.Channel()
        handleError(err, "Can't create a amqpChannel")
    
        defer amqpChannel.Close()
    
        queue, err := amqpChannel.QueueDeclare("add", true, false, false, false, nil)
        handleError(err, "Could not declare `add` queue")
    
        rand.Seed(time.Now().UnixNano())
    
        addTask := gopher_and_rabbit.AddTask{Number1: rand.Intn(999), Number2: rand.Intn(999)}
        body, err := json.Marshal(addTask)
        if err != nil {
            handleError(err, "Error encoding JSON")
        }
    
        err = amqpChannel.Publish("", queue.Name, false, false, amqp.Publishing{
            DeliveryMode: amqp.Persistent,
            ContentType:  "text/plain",
            Body:         body,
        })
    
        if err != nil {
            log.Fatalf("Error publishing message: %s", err)
        }
    
        log.Printf("AddTask: %d+%d", addTask.Number1, addTask.Number2)
    
    }

    shared.go

    package gopher_and_rabbit
    
    type Configuration struct {
        AMQPConnectionURL string
    }
    
    type AddTask struct {
        Number1 int
        Number2 int
    }
    
    var Config = Configuration{
        AMQPConnectionURL: "amqp://guest:guest@localhost:5672/",
    }
  • 相关阅读:
    LoadRunner ---手动关联与预关联
    Error -27780: [GENERAL_MSG_CAT_SSL_ERROR]connect to host "124.202.213.70" failed: [10054] Connection reset by peer [MsgId: MERR-27780]
    LR录制https协议报证书错误,导航已阻止
    python sort和sorted的区别以及使用方法
    python 操作exls学习之路1-openpyxl库学习
    python json学习之路2-认识python种的json模块
    python json学习之路1-认识json格式数据
    磁盘性能测试学习之路2-测试磁盘性能工具的选择
    磁盘性能测试学习之路1-认识磁盘的各项参数
    飞机进度条
  • 原文地址:https://www.cnblogs.com/kevin-yang123/p/14875926.html
Copyright © 2011-2022 走看看