0


go语言操作rabbitmq

package main

import("fmt""log""sync""time""github.com/streadway/amqp")funcdeclareQueue(ch *amqp.Channel, queueName string)error{_, err := ch.QueueDeclare(
        queueName,// namefalse,// durablefalse,// delete when unusedfalse,// exclusivefalse,// no-waitnil,// arguments)return err
}funcproducer(ch *amqp.Channel, wg *sync.WaitGroup, queueName string){defer wg.Done()for i :=1; i <=5; i++{
        message := fmt.Sprintf("Message %d", i)

        err := ch.Publish("",// exchange
            queueName,// routing keyfalse,// mandatoryfalse,// immediate
            amqp.Publishing{
                ContentType:"text/plain",
                Body:[]byte(message),})if err !=nil{
            log.Fatalf("Failed to publish a message: %v", err)}

        fmt.Printf("Sent: %s\n", message)
        time.Sleep(time.Second)}}funcconsumer(ch *amqp.Channel, wg *sync.WaitGroup, queueName string){defer wg.Done()

    msgs, err := ch.Consume(
        queueName,// queue"",// consumertrue,// auto-ackfalse,// exclusivefalse,// no-localfalse,// no-waitnil,// args)if err !=nil{
        log.Fatalf("Failed to register a consumer: %v", err)}for msg :=range msgs {
        fmt.Printf("Received: %s\n", msg.Body)}}funcmain(){
    conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/")if err !=nil{
        log.Fatalf("Failed to connect to RabbitMQ: %v", err)}defer conn.Close()

    ch, err := conn.Channel()if err !=nil{
        log.Fatalf("Failed to open a channel: %v", err)}defer ch.Close()

    queueName :="your_queue_name"// Declare the queue before using it
    err =declareQueue(ch, queueName)if err !=nil{
        log.Fatalf("Failed to declare queue: %v", err)}var wg sync.WaitGroup
    wg.Add(2)goproducer(ch,&wg, queueName)goconsumer(ch,&wg, queueName)

    wg.Wait()}

运行结果

Sent: Message 1    
Received: Message 1
Sent: Message 2
Received: Message 2
Sent: Message 3
Received: Message 3
Sent: Message 4
Received: Message 4
Sent: Message 5
Received: Message 5
标签: golang rabbitmq

本文转载自: https://blog.csdn.net/weixin_46529397/article/details/135210849
版权归原作者 别人家的孩子zyh 所有, 如有侵权,请联系我们删除。

“go语言操作rabbitmq”的评论:

还没有评论