【RabbitMQ】核心概念讲到,Exchange有三种类型:
- fanout
- direct
- topic
紧接着的三篇文章将介绍着三种类型,并给出golang的实现,本篇为第一篇,介绍fanout类型(fanout类型的exchange,会将消息发送到所有绑定了该exchange的queue上,可以理解成广播模式)
在我的开发环境中,GOPATH=C:\Users${user_name}\go,在GOPATH\src 目录下新建fanout项目。在fanout项目中新建两个文件:
- producer.go。负责发送消息
- consumer.go。负责接收消息
在producer.go中写入以下代码:
package main
import (
"log"
"os"
"github.com/streadway/amqp"
)
func exit_on_error(err error) {
if err != nil {
log.Fatal(err)
}
}
func main() {
conn, err := amqp.Dial("amqp://<username>:<password>@<host>:<port>/")
exit_on_error(err)
defer conn.Close()
ch, err := conn.Channel()
exit_on_error(err)
defer ch.Close()
err = ch.ExchangeDeclare(
"example.fanout", // name
"fanout",