Golang使用RabbitMQ消息中间件amqp协议
2024-09-07 14:56:52
"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
注:队列应先注册一次,才能收到消息
最新文章
- Python开发【十一章】:RabbitMQ队列
- hdu1010 dfs+奇偶性减枝
- System.IO.File.Create 不会自动释放,一定要Dispose
- 用file上传文件时,浏览器返回值总是自动添加<;pre>;的解决办法
- 不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型
- win2008 64位下.net 无法访问oracle
- SDN理解:云数据中心底层网络架构
- java中Class对象详解
- GPU Accelerated Computing with Python
- 养成这8个编程习惯,你的Python性能将蹭蹭蹭地往上涨
- 辅助排序和Mapreduce整体流程
- 牛刀小试MySQL--基于GTID的replication
- Javascript 原生Cookie使用用法
- 对SQLite 数据库的一点点了解
- iOS 开发中的 Tips(一)
- poj 1028 Web Navigation(模拟)
- 【BZOJ3242】【NOI2013】快餐店(动态规划)
- Azure 软件架构选择
- 行内元素的margin只能左右有效。上下无效。
- 无法远程访问Mysql的解决方案
热门文章
- C++性能榨汁机之无锁编程
- 一个下午整理的Web前端常见的英文缩写
- C++ STL 之 list
- C#面向对象(抽象类、接口、构造函数、重载、静态方法和静态成员)
- redis系列一: windows下安装redis
- 【Day3】1.正则表达式
- maskrcnn-benchmark错误:ImportError: cannot import name rnn_compat
- Linux基础知识之文件的权限(一)
- Hadoop_15_MapRduce_案例1_Wordcount 单词统计
- 6. Design Patterns with First-Class Functions