rabbitMq有四种类型的交换机fanout、direct、topic、headers

一 不必交换机的队列

生产者示例 producer.go

package mainimport (    "fmt"    "github.com/streadway/amqp"    "log"    "time")func main() {    conn, err := amqp.Dial("amqp://user:password@host:ip/vhost")    if err != nil {        log.Fatalf(" %s", err)    }    defer conn.Close()    ch, err := conn.Channel()    if err != nil {        log.Fatalf("%s", err)    }    defer ch.Close()    body := "Hello World! " + time.Now().Format("2006-01-02 15:04:05")    fmt.Println(body)    ch.QueueDeclare(        "j_test_delay", // name        false,          // durable        false,          // delete when unused        false,          // exclusive        false,          // no-wait        nil,            // arguments    )    err = ch.Publish(        "",             // exchange 这里为空则不抉择 exchange        "j_test_delay", // routing key        false,          // mandatory        false,          // immediate        amqp.Publishing{            ContentType: "text/plain",            Body:        []byte(body),        })}

消费者 consumer.go

package mainimport (    "fmt"    "github.com/streadway/amqp"    "log"    "time")func main() {    conn, err := amqp.Dial("amqp://user:password@host:ip/vhost")    if err != nil {        log.Fatalf(" %s", err)    }    defer conn.Close()    ch, err := conn.Channel()    if err != nil {        log.Fatalf("%s", err)    }    defer ch.Close()    body := "Hello World! " + time.Now().Format("2006-01-02 15:04:05")    fmt.Println(body)    ch.QueueDeclare(        "j_test_delay", // name        false,          // durable        false,          // delete when unused        false,          // exclusive        false,          // no-wait        nil,            // arguments    )    err = ch.Publish(        "",             // exchange 这里为空则不抉择 exchange        "j_test_delay", // routing key        false,          // mandatory        false,          // immediate        amqp.Publishing{            ContentType: "text/plain",            Body:        []byte(body),        })}