美文网首页
Golang RabbitMQ主题模式(Topic) --- 2

Golang RabbitMQ主题模式(Topic) --- 2

作者: 一位先生_ | 来源:发表于2022-06-20 07:59 被阅读0次

    Golang RabbitMQ主题(topic)模式,跟路由模式(Direct)类似,最大的区别就是主题模式的路由参数支持模糊匹配,主题模式的交换机类型为:topic。

    主题模式架构如下:

    image.png

    1.前置教程

    说明:因为Golang RabbitMQ发布订阅章节,已经包含完整的代码样例,其他RabbitMQ模式,仅仅是交换机的定义和路由参数不一样,所以仅展示关键代码。

    2.声明Topic交换机

    err = ch.ExchangeDeclare(
      "tizi365_topic", // 交换机名字,需要唯一
      "topic",      // 交换机类型
      true,          // 是否持久化
      false,         // auto-deleted
      false,         // internal
      false,         // no-wait
      nil,           // arguments
    )
    
    

    3.发送消息

        // 消息内容
        body := "Hello Tizi365.com!"
    
        // 推送消息
        err = ch.Publish(
            "tizi365_topic",     // exchange(交换机名字)
            "www.tizi365.com", // 路由参数,关键参数,决定你的消息会发送到那个队列。
            false,  // mandatory
            false,  // immediate
            amqp.Publishing {
                ContentType: "text/plain", // 消息内容类型,这里是普通文本
                Body:        []byte(body),  // 消息内容
            })
    
    

    4.消费消息

    4.1.绑定交换机

    // 声明需要操作的队列
        q, err := ch.QueueDeclare(
            "",    // 队列名字,不填则随机生成一个
            false, // 是否持久化队列
            false, // delete when unused
            true,  // exclusive
            false, // no-wait
            nil,   // arguments
        )
    
        // 队列绑定指定的交换机
        err = ch.QueueBind(
            q.Name, // 队列名
            "*.tizi365.com",     // 路由参数,关键参数,使用了通配符 * 星号,匹配一个单词,如果使用 # 井号可以匹配多个单词.
            "tizi365_topic", // 交换机名字,需要跟消息发送端定义的交换器保持一致
            false,
            nil)
    
    

    4.2.处理消息

    // 创建消费者
        msgs, err := ch.Consume(
            q.Name, // 引用前面的队列名
            "",     // 消费者名字,不填自动生成一个
            true,   // 自动向队列确认消息已经处理
            false,  // exclusive
            false,  // no-local
            false,  // no-wait
            nil,    // args
        )
    
        // 循环消费队列中的消息
        for d := range msgs {
            log.Printf("接收消息=%s", d.Body)
        }
    

    相关文章

      网友评论

          本文标题:Golang RabbitMQ主题模式(Topic) --- 2

          本文链接:https://www.haomeiwen.com/subject/wvifsrtx.html