• 【RabbitMQ】三、交换器和队列


    交换器声明(ExchangeDeclare)参数描述

    exchange:交换器名称
    type:类型
    durable:持久化
    autoDelete:自动删除
    arguments:结构化参数(alternate-exchange)
    durable:设置持久化后,将会存到硬盘中。服务器重启也不删除
    autoDelete:当所有的与此连接的客户端都断开时,该交换器会被删除

    队列声明(QueueDeclare)参数描述
    queue:队列名称
    durable:持久化
    exclusive:排他
    autoDelete:自动删除
    arguments:结构化参数
    durable:设置持久化后,将会存到硬盘中。服务器重启也不删除
    exclusive:设置是否排他,排他队列是基于连接可见,同一连接的不同信道是可以同时访问同一连接创建的排他队列(这里还有待拓展)
    autoDelete:没有消费者 自动删除队列
     

    1)交换器和队列绑定

    //  创建一个信道
    var channel = connection.CreateModel(); //  声明一个持久化、非自动删除的、'fanout'类型的交换器
    channel.ExchangeDeclare(exchange: exchangeName, type: ExchangeType.Fanout,durable:true);
    //  声明一个非持久化的、排他的、自动删除的队列 var queueName = channel.QueueDeclare().QueueName;  //  这里队列名称自动生成
    //  绑定 channel.QueueBind(queue: queueName, exchange: exchangeName, routingKey: "");

     2)另一个交换器与上述队列绑定(2个交换器共享同一队列)

    //  声明交换器2
    channel.ExchangeDeclare(exchange: exchangeName2, type: ExchangeType.Fanout, durable: true);
    //  声明队列 该
    queueName与1)中的queueName是同一个。持久化、非排他、非自动删除
    channel.QueueDeclare(queueName, true, false, false,null);
    //  绑定
    channel.QueueBind(queue: queueName, exchange: exchangeName2, routingKey:
    "");

    3)交换机和交换器绑定

    void ExchangeBind(string destination, string source, string routingKey);
    一个queue  任何一条消息 只能被消费确认一次  而消费和确认是在某一个channel做的   
    所以一条消息  只会被一条channel管道消费 和确认成功唯一的一次  确认是肯定只有唯一的一次
    异常情况下  可能有多次被获取 但是确认只能有一次

  • 相关阅读:
    Odoo模块开发教程3-模块继承之修改视图和数据第四讲
    Odoo模块开发教程3-模块继承之修改视图和数据第三讲
    Odoo模块开发教程2-模块继承之原模型继承
    Odoo模块开发教程1-模块继承第一讲
    Odoo安装教程14-创建新的插件模块之网页和控制器
    Odoo安装教程13-创建新的插件模块之业务逻辑层
    Odoo安装教程12-创建新的插件模块之设置视图层第三讲
    HackBar收费版绕过
    记一次linux服务器入侵应急响应
    软件开发之安全设计
  • 原文地址:https://www.cnblogs.com/xuxml/p/13539198.html
Copyright © 2020-2023  润新知