package main
import (
"errors"
"fmt"
"log"
"os"
"time"
"github.com/streadway/amqp"
)
// This exports a Session object that wraps this library. It
// automatically reconnects when the connection fails, and
// blocks all pushes until the connection succeeds. It also
// confirms every outgoing message, so none are lost.
// It doesn't automatically ack each message, but leaves that
// to the parent process, since it is usage-dependent.
//
// Try running this in one terminal, and `rabbitmq-server` in another.
// Stop & restart RabbitMQ to see how the queue reacts.
func main() {
name := "job_queue"
addr := "amqp://guest:guest@localhost:5672/"
queue := New(name, addr)
message := []byte("message")
// Attempt to push a message every 2 seconds
for {
time.Sleep(time.Second * 3)
if err := queue.Push(message); err != nil {
fmt.Printf("Push failed: %s\n", err)
} else {
fmt.Println("Push succeeded!")
}
}
}
type Session struct {
name string
logger *log.Logger
connection *amqp.Connection
channel *amqp.Channel
done chan bool
notifyConnClose chan *amqp.Error
notifyChanClose chan *amqp.Error
notifyConfirm chan amqp.Confirmation
isReady bool
}
const (
// When reconnecting to the server after connection failure
reconnectDelay = 5 * time.Second
// When setting up the channel after a channel exception
reInit
go amqp 自动重连例子
最新推荐文章于 2024-08-30 08:42:53 发布
这篇博客记录了使用Go语言的streadway/amqp包创建与RabbitMQ连接时的自动重连示例,确保在连接断开后能够重新建立连接。
摘要由CSDN通过智能技术生成