您的位置:首页 > 产品设计 > UI/UE

RabbitMQ随手笔记(五)交换器和队列(.netCore2.0)

2018-03-10 11:28 316 查看
1.声明一个交换器和队列
第一种方式,已知队列名称(由客户端分配而非RabbitMQ自动生成) //创建了一个持久化的,非自动删除的、绑定类型为direct的转换器
channel.ExchangeDeclare(EXCHANGE_NAME, "direct", true, false, null);
//创建了一个持久化的,非排他性的、非自动删除的队列
channel.QueueDeclare(QUEUE_NAME, true, false, false, null);
channel.QueueBind(QUEUE_NAME, EXCHANGE_NAME, ROUTING_KEY, null);第二种方式,不需要知道QueueName的场景。该场景声明的队列,只对当前应用中同一个Connection层面可用,同一个Connection的不同的Channel可用,并且也会在应用连接断开时自动删除
//创建了一个持久化的,非自动删除的、绑定类型为direct的转换器
channel.ExchangeDeclare(EXCHANGE_NAME, "direct", true, false, null);
//创建了一个非持久化的,排他性的、自动删除的队列//队列的名称由RabbitMQ自动生成
var queue = channel.QueueDeclare();
//获取队列名称
string queueName = queue.QueueName;
//队列与交换器绑定
channel.QueueBind(queueName, EXCHANGE_NAME, ROUTING_KEY, null);
2.ExchangeDelare()说明
void ExchangeDeclare(string exchange, string type, bool durable, bool autoDelete, IDictionary<string, object> arguments);

主要参数介绍:
exchange:交换器名称

type:交换器类型,主要有fanout、direct,topic等;
durable:是否持久化,true为持久化,持久化可以将交换器存盘;
autoDelete:是否自动删除
arguments:其他参数

3.QueueDeclare()说明

public static QueueDeclareOk QueueDeclare(this IModel model, string queue = "", bool durable = false, bool exclusive = true, bool autoDelete = true, IDictionary<string, object> arguments = null);

主要参数介绍:

queue :队列名称;

durable :是否持久化;

exclusive :是否排他;如果设置为true(即排他):①排他队列是基于连接的(Connetcion),同一个连接的不同的信道(Channel)可以同时访问同一个连接创建的排他队列;②如果一个连接已经声明了一个排他队列,其他连接不允许创建同名的排他队列;③即使该队列是持久化的,一旦连接或者客户端退出,该排他队列都会自动删除;排他队列适用于一个客户端同时发送和读取消息的场景

autoDelete :是否自动删除;

arguments :其他参数。

4.QueueBind()说明

void QueueBind(string queue, string exchange, string routingKey, IDictionary<string, object> arguments);

queue :队列名称;

exchange:交换器名称

routingKey:用来绑定队列和交换器的路由键

arguments :其他参数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息