GoLang - 设置死信队列
Well not many said, show my code:package main// 设置过期队列和死信队列import ("fmt""time""github.com/streadway/amqp")const (host1 = "192.168.5.62"port1 = 5672)func main() {conn, err := amqp.Dial(fmt.Sprintf("amq
·
Well not many said, show my code:
package main
// 设置过期队列和死信队列
import (
"fmt"
"time"
"github.com/streadway/amqp"
)
const (
host1 = "192.168.5.62"
port1 = 5672
)
func main() {
conn, err := amqp.Dial(fmt.Sprintf("amqp://trkj:trkj@%s:%d/test", host1, port1))
if err != nil {
fmt.Println("connect rabbitmq server failed:", err)
return
}
defer conn.Close()
ch, err := conn.Channel()
if err != nil {
fmt.Println("create channel failed:", err)
return
}
defer ch.Close()
err = ch.ExchangeDeclare("exchange.dlx", "direct", false, true, false, false, nil)
if err != nil {
fmt.Println("declare dlx exchange error:", err)
return
}
err = ch.ExchangeDeclare("exchange.normal", "fanout", false, true, false, false, nil)
if err != nil {
fmt.Println("declare normal exchange error:", err)
return
}
var (
args = make(map[string]interface{})
)
//设置队列的过期时间
args["x-message-ttl"] = 5000
//设置死信交换器
args["x-dead-letter-exchange"] = "exchange.dlx"
//设置死信交换器Key
args["x-dead-letter-routing-key"] = "dlxKey"
normalQueue, err := ch.QueueDeclare("queue.normal", false, true, false, true, args)
if err != nil {
fmt.Println("declare normal queue error:", err)
return
}
err = ch.QueueBind(normalQueue.Name, "normalKey", "exchange.normal", false, nil)
if err != nil {
fmt.Println("bind normal queue error:", err)
return
}
dlxQueue, err := ch.QueueDeclare("queue.dlx", false, true, false, true, nil)
if err != nil {
fmt.Println("declare dlx queue error:", err)
return
}
err = ch.QueueBind(dlxQueue.Name, "dlxKey", "exchange.dlx", false, nil)
if err != nil {
fmt.Println("bind dlx queue error:", err)
return
}
for count := 0; count < 20; count++ {
msg := fmt.Sprintf("test dlx message .%d", count)
ch.Publish("exchange.normal", "normalKey", false, false, amqp.Publishing{
ContentType: "text/plain",
Body: []byte(msg),
})
fmt.Println(msg)
time.Sleep(time.Second * 2)
}
// conn.Close()
// ch.Close()
}
Open the website of RabbitMQ, details:
更多推荐
已为社区贡献2条内容
所有评论(0)