golang写第一个rabbitmq程序

1.介绍

使用amqp的库用golang语言进行rabbitmq的开发,此文章的代码可以用来安装完成rabbitmq后,进行测试。也可以作为学习rabbitmq的第一个测试程序。

2.golang rabbitmq库地址

https://github.com/streadway/amqp

3.错误处理

func failOnErr(err error, msg string) {
    if err != nil {
        fmt.Println("msg", err, msg)
        panic("error")
    }
}

4. 建立连接

func mqConnect() {
    var err error
    conn, err = amqp.Dial(mqurl)
    failOnErr(err, "connect")

    channel , err = conn.Channel()
    failOnErr(err, "channel")
}

5.断开连接

func close(){
    channel.Close()
    conn.Close()
}

6.声明交换器、消息队列并发送消息

func push() {
    if channel == nil {
        mqConnect()
    }

    mgsConnect := "hello world"
    err := channel.ExchangeDeclare(exchange, "direct", false, false, false,false, nil)
    failOnErr(err, "ExchangeDeclare")

    _, err = channel.QueueDeclare(queueName, false, false,
        false, false, nil)
    failOnErr(err, "QueueDeclare")

    err = channel.QueueBind(queueName, "info", exchange, false, nil)
    failOnErr(err, "QueueBind")

    err = channel.Publish(exchange, "info", false, false, amqp.Publishing{
        ContentType:"text/plain", Body:[]byte(mgsConnect),
    })
    failOnErr(err, "Publish")

    fmt.Println("push ok")
}

.7消费消息

func receive() {
    if channel == nil {
        mqConnect()
    }

    msg, ok, err := channel.Get(queueName, false)
    failOnErr(err, "")
    if !ok {
        fmt.Println("do not get msg")
        return
    }

    err = channel.Ack(msg.DeliveryTag, false)
    failOnErr(err, "")

    s := BytesToString(&(msg.Body))
    fmt.Printf("receve msg is :%s\n", *s)
}

func BytesToString(b *[]byte) *string {
    s := bytes.NewBuffer(*b)
    r := s.String()
    return &r
}

.8程序入口

package main

import (
    "github.com/streadway/amqp"
    "fmt"
    "bytes"
)

var conn *amqp.Connection
var channel *amqp.Channel

const (
    queueName = "hello"
    exchange = "exchange1"
    mqurl = "amqp://username:password@localhost:5672/"
)

func main() {
    push()
    receive()
    fmt.Println("end")
    close()
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,889评论 19 139
  • http://liuxing.info/2017/06/30/Spring%20AMQP%E4%B8%AD%E6%...
    sherlock_6981阅读 16,158评论 2 11
  • 来源 RabbitMQ是用Erlang实现的一个高并发高可靠AMQP消息队列服务器。支持消息的持久化、事务、拥塞控...
    jiangmo阅读 13,520评论 2 34
  • 阳光很暖,微风不燥 ,时光不老 ,希望、你、我、都好~妈妈说,你的脸怎么冻肿了~~~ 今天,阳光真强烈!
    农妇么么哒阅读 2,905评论 4 2
  • 意大利咖啡(Espresso)——“Espresso”原意为“快速”,Espresso Cafe则指在瞬间提炼出来...
    格小主阅读 3,280评论 0 2

友情链接更多精彩内容