Golang使用RabbitMQ消息中间件amqp协议
"github.com/streadway/amqp"
Publish发布
// amqp://<user>:<password>@<ip>:<port>
var addr = "amqp://test:test123@127.0.0.1:5672" //test
func main() {
// 建立连接
conn, err := amqp.Dial(addr)
if nil != err {
logs.Error(err)
return
}
defer conn.Close()
// 申请通道
ch, err := conn.Channel()
if nil != err {
logs.Error(err)
return
}
defer ch.Close()
// 定义交换“direct”、“fanout”、“topic”和“headers”
err = ch.ExchangeDeclare("happy", amqp.ExchangeTopic, true, false, false, false, nil)
if nil != err {
logs.Error(err)
return
}
data = fmt.Sprintf("hello,world!!!")
//a.b.c.d.e 为发布key,以.分割;
err = ch.Publish("happy", "a.b.c.d.e", false, false,
amqp.Publishing{
ContentType: "text/plain",
Body: []byte(data),
DeliveryMode: amqp.Transient, // 1=non-persistent, 2=persistent
})
if nil != err {
logs.Error(err)
return
}
}
Recover 接收
// amqp://<user>:<password>@<ip>:<port>
var addr = "amqp://test:test123@127.0.0.1:5672" //test
func main() {
// 建立连接
conn, err := amqp.Dial(addr)
if nil != err {
logs.Error(err)
return
}
defer conn.Close()
// 申请通道
ch, err := conn.Channel()
if nil != err {
logs.Error(err)
return
}
defer ch.Close()
// 定义交换
err = ch.ExchangeDeclare("happy", amqp.ExchangeTopic, true, false, false, false, nil)
if nil != err {
logs.Error(err)
return
}
queName := "test.test1.test2"
topic := "a.#"
// 定义通道
que, err := ch.QueueDeclare(queName, false, false, false, false, nil)
if nil != err {
logs.Error(err)
}
err = ch.QueueBind(que.Name, topic, "happy", false, nil)
if nil != err {
logs.Error(err)
return
}
msges, err := ch.Consume(que.Name, "", true, false, false, false, nil)
if nil != err {
logs.Error(err)
return
}
logs.Info("start recv")
for msg := range msges {
fmt.Println(">>> %s", string(msg.Body))
}
}
http管理端口是15672
注:队列应先注册一次,才能收到消息
Golang使用RabbitMQ消息中间件amqp协议的更多相关文章
- RabbitMQ与AMQP协议
AMQP(Advanced Message Queuing Protocol, 高级消息队列协议)是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计 ...
- RabbitMQ与AMQP协议详解
1. 消息队列的历史 了解一件事情的来龙去脉,将不会对它感到神秘.让我们来看看消息队列(Message Queue)这项技术的发展历史. Message Queue的需求由来已久,80年代最早在金融交 ...
- rabbitMQ之AMQP协议
1.什么是AMQP协议 即高级消息队列协议,规范客户端与消息中间件服务器之间的通信,并能相互操作. 2.AMQP协议的作用 降低应用程序之间的耦合度,这样不同应用之间的集成的难度将变得更小,并开发出更 ...
- 二、RabbitMQ简介及AMQP协议
RabbitMQ简介 RabbitMQ是开源的消息代理和队列服务器,是由Erlang语言开发的,基于AMQP协议(Advanced Message Queuing Protocol高级消息队列协议)的 ...
- rabbitmq学习(一):AMQP协议,AMQP与rabbitmq的关系
前言 当学习完AMQP的基本概念后,可以到http://tryrabbitmq.com/中利用rabbitmq模拟器进行消息的模拟发送和接收 一.什么是AMQP,AMQP与rabbitmq的关系 AM ...
- Nmap脚本文件分析(AMQP协议为例)
Nmap脚本文件分析(AMQP协议为例) 一.介绍 上两篇文章 Nmap脚本引擎原理 编写自己的Nmap(NSE)脚本,分析了Nmap脚本引擎的执行过程,以及脚本文件的编写,这篇文章将以解析AMQ ...
- AMQP 协议介绍
RabbitMQ 是遵从AMQP 协议的, 换句话说, RabbitMQ 就是AMQP 协议的Erlang 的实现(当然RabbitMQ 还支持STOMP2 .MQTT3 等协议) 0 AMQP 的模 ...
- 消息中间件——RabbitMQ(三)理解RabbitMQ核心概念和AMQP协议!
前言 本章学习,我们可以了解到以下知识点: 互联网大厂为什么选择RabbitMQ? RabbiMQ的高性能之道是如何做到的? 什么是AMQP高级协议? AMQP核心概念是什么? RabbitMQ整体架 ...
- RabbitMQ二:AMQP协议
参考这个:http://kb.cnblogs.com/page/73759/ 参考这个:http://www.cnblogs.com/charlesblc/p/6286875.html 写的挺好 Ra ...
随机推荐
- php--最新正则(手机号码)
这次给大家带来正则验证(2018最新最全手机号验证),正则验证(2018最新最全手机号验证)的注意事项有哪些,下面就是实战案例,一起来看一下. 下面给大家分享2018手机号正则表达式验证方法,具体内容 ...
- luogu P3773 [CTSC2017]吉夫特
luogu 这里的组合数显然要用\(\text{lucas}\)定理来求,所以考虑\(\text{lucas}\)定理的本质,即把\(n,m\)分别拆分成\(p\)进制串\(\{a\}\{b\}\), ...
- GSM AT指令 SIM900A TC35
http://download.csdn.net/download/zhangxuechao_/9911264 短信 TEXT格式 设置短消息中心号码: AT+CSCA="+86130101 ...
- 使用nodejs创建Marketing Cloud的contact数据
源代码如下: var config = require("./mcConfig"); var request = require('request'); var url = con ...
- 对于写Python学习笔记的看法
学习写笔记是一个不错的学习方法,好些同学在学习Python过程中也会写学习笔记.俗话说好记性不如烂笔头,我很赞同这个说法. 我列举几个学习Python写笔记的好处: 1.Python知识的二度巩固 通 ...
- 对于在tinyOS中读取MPU6050数据卡死的总结
最近这几天一直给tinyOS挂载外设,从最简单的LED.KEY,再到串口,这些都没什么大问题,无非就是先初始化tinyOS,再初始化硬件外设,接着启动tinyOS,然后tinyOS去寻找优先级最高的任 ...
- Django阶段总结与Ajax
一.路由控制 二.视图层 三.模板层 四.模型层.单表操作.多表操作 五.什么是ajax 一.路由控制 补充点(什么是web应用?) 网站:BS架构应用程序:B是浏览器 S:server(实现了ws ...
- ftp服务器终端登录后乱码处理方法
首先在windows上用资源管理器登录看看会不会乱码,如果不会,说明是GBK编码 因为windows默认是GBK(936),linux默认(UTF-8) 因为FTP服务器我们修改不了,如果用linux ...
- 用VNC远程无线站
用VNC远程无线站 第一步: 远程一台我们可以vnc连接的linux电脑(IP1为实际IP地址) vim /etc/ssh/sshd_config 修改:69行为 X11Forwarding no 为 ...
- python+selenium之——pip环境变量配置
将pip的路径……\Python37-32\Scripts添加进Path: 而非……\Python37-32\Lib\site-packages\pip-18.1-py3.7.egg