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: 

 

 

 

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐