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 :其他参数。
第一种方式,已知队列名称(由客户端分配而非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 :其他参数。
相关文章推荐
- RabbitMQ随手笔记(六)发送消息(.netCore2.0)
- RabbitMQ随手笔记(二)RabbitMQ-"Hello World" 之生产者(netCore2.0)
- RabbitMQ随手笔记(十一)mandatory参数(.netCore2.0)
- RabbitMQ随手笔记(八)消费者端确认和拒绝(netCore2.0)
- RabbitMQ随手笔记(十二)备份交换器(.netCore2.0)
- RabbitMQ随手笔记(十三)TTL(.netCore2.0)
- RabbitMQ随手笔记(九)RabbitMQ实现RPC(netCore2.0)
- RabbitMQ随手笔记(三)RabbitMQ-“Hello World” 之消费者(.netCore2.0)
- RabbitMQ随手笔记(四)连接RabbitMQ (.netCore2.0)
- RabbitMQ随手笔记(十五)持久化(.netCore2.0)
- .NetCore利用BlockingCollection实现简易消息队列
- .NET 创建 classlib时,netcoreapp2.0与netstandard2.0的区别
- python2.0_s12_day9之day8遗留知识(queue队列&生产者消费者模型)
- 【RabbitMQ】生产者,消费者,信道,队列,交换器和绑定
- DotNetCore跨平台~2.0提前发布喽
- rabbitmq消息队列——"topic型交换器"
- 树莓派3中运行Netcore2.0程序
- 树莓派3中运行Netcore2.0程序
- MCP2.0平台几个比较重的队列堵塞问题分析
- 【Ecstore2.0】计划任务/队列/导入导出 的执行问题