![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
rabbitmq
吴冬冬
此处省略300字
展开
-
golang使用rabbitmq(一)helloworld
modulerequire github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94连接rabbitmq conn, err := amqp.Dial("amqp://admin:rabbitmq123@18.232.146.30:5672/") defer conn.Close()打开通道 ch, err := co...原创 2019-06-06 09:33:38 · 3642 阅读 · 1 评论 -
golang使用rabbitmq(二)工作队列
在helloworld那一章讲了一个简单的一个生产者一个消费者的模型,但生产系统中很多时候是多个生产者或者多个消费者同时处理的。生产者 body := bodyFrom(os.Args) err = ch.Publish("", q.Name, false, false, amqp.Publishing{ DeliveryMode: amqp.Persistent, ContentT...原创 2019-06-10 10:52:12 · 2553 阅读 · 0 评论 -
golang使用rabbitmq(三)发布/订阅
上一篇文章中讲了工作队列,但是工作队列只能做到一个生产者的消息被消费者消费一次。现在要实现一个生产者的消息被两个不同的消费者同时消费,我们把这种模式叫做发布订阅。交换器RabbitMQ消息传递模型的核心是生产者永远不会把消息直接发送到某个队列上,甚至根本不知道消息是否发送到队列上。生产者只向交换器发送消息。交换器来决定怎么处理消息,是把消息传递到特定的队列,还是把消息传到多个队列,或者直接丢...原创 2019-06-17 10:38:32 · 3257 阅读 · 1 评论 -
golang使用rabbitmq(四)路由功能
路由上一章我们讲的是一个简单的日志系统,把日志广播到每一个接受者。在这一章增加一点功能,为了节省磁盘,只有告警日志和错误日志才进行存储,其他日志就打印到控制台就可以了。绑定上一章我们也讲过绑定,绑定是让队列和交换器之间的关系。通俗点说就是让队列只对它所绑定的交换器中的信息感兴趣。for _, key := range os.Args[1:] { log.Printf("Binding ...原创 2019-06-18 14:49:05 · 1536 阅读 · 0 评论 -
golang使用rabbitmq(五)Topic模式
简介上一篇用可选择接受的direct交换器代替了广播接受到fanout交换器,但是direct模式还是有局限性,它不能通过多个条件路由。比如linux的日志系统,它不仅分级别(info/warn/crit…),而且还分来源设备(auth/cron/kern…)。我们需要一个非常复杂度组合,比如想接受来自cron的critical日志和来自kern的所有日志。当然topic交换器可以实现这一...原创 2019-08-14 10:10:38 · 2199 阅读 · 1 评论 -
golang使用rabbitmq(六)RPC
之前的章节都是在说一方发指令,另一方执行这种情况,指令发送者不关系指令的完成情况,或者不需要阻塞去获得结果,结果异步通知。但很多时候是需要阻塞得去获得执行结果的,比如http的请求。在rabbitmq使用RPC的关键就是ReplyTo属性err = ch.ExchangeDeclare("rpc_topic", amqp.ExchangeTopic, true, false, false, ...原创 2019-09-05 16:36:17 · 1237 阅读 · 0 评论