内容简介:上一章我们讲的是一个简单的日志系统,把日志广播到每一个接受者。在这一章增加一点功能,为了节省磁盘,只有告警日志和错误日志才进行存储,其他日志就打印到控制台就可以了。上一章我们也讲过绑定,绑定是让队列和交换器之间的关系。通俗点说就是让队列只对它所绑定的交换器中的信息感兴趣。绑定时的key和交换器类型有关系,如果在fanout交换器中这个值就会被忽略,而在direct交换器中的作用要看下面的内容。
上一章我们讲的是一个简单的日志系统,把日志广播到每一个接受者。在这一章增加一点功能,为了节省磁盘,只有告警日志和错误日志才进行存储,其他日志就打印到控制台就可以了。
上一章我们也讲过绑定,绑定是让队列和交换器之间的关系。通俗点说就是让队列只对它所绑定的交换器中的信息感兴趣。
for _, key := range os.Args[1:] { log.Printf("Binding queue %s to exchange %s with routing key %s", q.Name, "logs_direct", key) err = ch.QueueBind(q.Name, key, "logs_direct", false, nil) failOnError(err, "Failed to bind a queue") }
绑定时的key和交换器类型有关系,如果在fanout交换器中这个值就会被忽略,而在direct交换器中的作用要看下面的内容。
Direct交换器
我们上一篇的日志系统,会把日志发送到所有的消费者。现在扩展以下,把警告和错误日志才存储到文件中,而普通信息打印到控制台即可。
fanout交换器就做不到这么灵活了,这时候就需要direct交换器。direct交换器也很简单就是把发送时带有 routing key
的消息发送到通过 binding key
绑定到交换器的队列中,这两个值要相同才可以发送。
相同 binding key
值可以绑定多个队列,一个队列也可以通过多个 binding key
值绑定
分发日志
首先创建direct交换器
err = ch.ExchangeDeclare("logs_direct", amqp.ExchangeDirect, true, false, false, false, nil) failOnError(err, "Failed to declare an exchange")
然后往交换器里发送信息
body := bodyFrom(os.Args) err = ch.Publish("logs_direct", severityFrom(os.Args), false, false, amqp.Publishing{ DeliveryMode: amqp.Persistent, ContentType: "text/plain", Body: []byte(body), }) failOnError(err, "Failed to publish a message")
现在进行订阅
q, err := ch.QueueDeclare("", false, false, true, false, nil) failOnError(err, "Failed to declare a queue") if len(os.Args) < 2 { log.Printf("Usage: %s [info] [warning] [error]", os.Args[0]) os.Exit(0) } for _, key := range os.Args[1:] { log.Printf("Binding queue %s to exchange %s with routing key %s", q.Name, "logs_direct", key) err = ch.QueueBind(q.Name, key, "logs_direct", false, nil) failOnError(err, "Failed to bind a queue") } msgs, err := ch.Consume(q.Name, "", true, false, false, false, nil) failOnError(err, "Failed to register a consumer")
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- JFinal 4.9.03 发布,添加路由扫描功能
- Lambkit 1.0.2 版本发布,新增 API 路由功能
- Fizz Gateway 1.3.0 发布,全新的服务发现、服务编排、反向代理路由管理功能
- vue路由篇(动态路由、路由嵌套)
- 小程序封装路由文件和路由方法,5种路由方法全解析
- Vue的路由及路由钩子函数
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
网络营销实战密码
昝辉Zac / 电子工业出版社 / 2009.1 / 56.00元
本书是作者几年来网络营销实战的总结,与其他网络营销书籍最大不同之处是:只专注于实战,不谈理论。本书分三部分详细介绍了网络营销实用策略和技巧,并分析了大量实战案例。第一部分介绍市场与产品研究,包括用户、市场和竞争对手的调查;产品、目标市场的确定;价格策略;赢利模式等。第二部分讨论以网络营销为导向的网站设计,包括怎样在网站上卖东西、提高转化率,以及网站目标设定等。第三部分研究怎样给网站带来流量,详细讨......一起来看看 《网络营销实战密码》 这本书的介绍吧!