Golang RabbitMQ Client amqp -> “Hello World!”

发送程序


package main

import (
    "fmt"
    "log"

    "github.com/streadway/amqp"
)

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

func main() {
    conn, err := amqp.Dial("amqp://guest:[email protected]:5672/")
    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(
        "hello", // name
        false,   // durable
        false,   // delete when usused
        false,   // exclusive
        false,   // no-wait
        nil,     // arguments
    )
    failOnError(err, "Failed to declare a queue")

    body := "hello"
    err = ch.Publish(
        "",     // exchange
        q.Name, // routing key
        false,  // mandatory
        false,  // immediate
        amqp.Publishing{
            ContentType: "text/plain",
            Body:        []byte(body),
        })
    failOnError(err, "Failed to publish a message")
}

接受程序


package main

import (
    "fmt"
    "log"

    "github.com/streadway/amqp"
)

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

func main() {
    conn, err := amqp.Dial("amqp://guest:[email protected]:5672/")
    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(
        "hello", // name
        false,   // durable
        false,   // delete when usused
        false,   // exclusive
        false,   // no-wait
        nil,     // arguments
    )
    failOnError(err, "Failed to declare a queue")

    msgs, err := ch.Consume(
        q.Name, // queue
        "",     // consumer
        true,   // auto-ack
        false,  // exclusive
        false,  // no-local
        false,  // no-wait
        nil,    // args
    )
    failOnError(err, "Failed to register a consumer")

    forever := make(chan bool)

    go func() {
        for d := range msgs {
            log.Printf("Received a message: %s", d.Body)
        }
    }()

    log.Printf(" [*] Waiting for messages. To exit press CTRL+C")
    <-forever
}
时间: 2024-10-09 22:11:12

Golang RabbitMQ Client amqp -> “Hello World!”的相关文章

【官方文档】RabbitMQ之AMQP

AMQP 0-9-1 Model Explained About This Guide This guide explains the AMQP 0-9-1 model used by RabbitMQ. The original version was written and kindly contributed by Michael Klishin and edited by Chris Duncan. High-level Overview of AMQP 0-9-1 and the AM

com.rabbitmq.client.impl.ForgivingExceptionHandler.log:119 -An unexpected connection driver error occured

在服务器上安装了一个RabbitMq,并新创建了一个用户授予了管理员角色,登录控制台查看一切正常,兴高采烈启动项目进行连接,结果一盆冷水下来,报如下错误: o.s.a.r.l.SimpleMessageListenerContainer : Failed to check/redeclare auto-delete queue(s). org.springframework.amqp.AmqpConnectException: java.net.ConnectException: Connect

Caused by: com.rabbitmq.client.ShutdownSignalException: connection error

周五下午的时候升级了一个环境,跑了批处理sh升级脚本后,启动时报下列错误: INFO | jvm 1 | 2017/02/24 17:39:09 | java.io.IOException INFO | jvm 1 | 2017/02/24 17:39:09 | at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:106) INFO | jvm 1 | 2017/02/24 17:39:09 | at com.rabbitmq.

com.rabbitmq.client.ShutdownSignalException: connection error

com.rabbitmq.client.ShutdownSignalException: connection error. 最近研究rabbitMQ,写的第一个例子的时候,是参照网上的例子.但是环境是centos6.7.之前遇到的小问题,在网上都好找到,就不写了. 在使用浏览器可以访问,但是用程序就访问不到了.是因为浏览器访问的端口是15672. 但是用java程序连接,端口就变成了5672. 所有需要在linux中,将5672端口开放. -A INPUT -m state --state N

对RabbitMQ.Client进行一下小小的包装,绝对实用方便

RabbitMQ是一个老牌的非微软的消息队列组件,一般来说应该能满足中小型公司对消息队列生产的需求,平时我们在.NET开发环境下运用它是可能会需要RabbitMQ.Client的SDK库,此库是官网提供,目前最新发布版本是v4.1.3.在我们对接项目时有时需要碰到对接上的注意,随之而来感觉对官方提供的SDK客户端还可以进行一次包装开发. Nuget安装命令:Install-Package RabbitMQ.Client.Wrap GitHub地址:https://github.com/rjf19

com.rabbitmq.client.impl.Frame.readFrom(Frame.java:95)

RabbitMQ 基于Erlang 实现, 客户端可以用Python | Java | Ruby | PHP | C# | Javascript | Go等语言来实现.这里做个java语言的测试.首先安装好RabbitMQ 服务端. maven依赖 <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>3.0

RabbitMQ与AMQP协议详解

1. 消息队列的历史 了解一件事情的来龙去脉,将不会对它感到神秘.让我们来看看消息队列(Message Queue)这项技术的发展历史. Message Queue的需求由来已久,80年代最早在金融交易中,高盛等公司采用Teknekron公司的产品,当时的Message queuing软件叫做:the information bus(TIB). TIB被电信和通讯公司采用,路透社收购了Teknekron公司.之后,IBM开发了MQSeries,微软开发了Microsoft Message Que

用PHP尝试RabbitMQ(amqp扩展)

装好了amqp后就可以开始编写代码了: 消费者:接收消息 逻辑: 创建连接-->创建channel-->创建交换机-->创建队列-->绑定交换机/队列/路由键-->接收消息 <?php /************************************* * PHP amqp(RabbitMQ) Demo - consumer * Author: Linvo * Date: 2012/7/30 **********************************

译: 1. RabbitMQ Spring AMQP 之 Hello World

本文是译文,原文请访问:http://www.rabbitmq.com/tutorials/tutorial-one-spring-amqp.html RabbitMQ 是一个Brocker (消息队列服务器),它接受和转发消息 . 你可以将它当做邮局: 当你将要发布的邮件放在邮箱中时,您可以确定邮件先生或Mailperson女士最终会将邮件发送给您的收件人.在这个比喻中,RabbitMQ是邮箱,邮局和邮递员. RabbitMQ和邮局之间的主要区别在于它不处理信纸,而是接受,存储和转发二进制大对