RabbitMQ Headers Exchange示例
(1)、发布者
var connectionFactory = new ConnectionFactory() { HostName="192.168.205.128",UserName="guest",Password="guest"}; //创建连接工厂
var connection = connectionFactory.CreateConnection(); //创建connection
var channel = connection.CreateModel(); //创建channel
//声明交换机
//String exchange, 交换机名称
//String type, 交换机类型
//Boolean durable, 是否持久化
//Boolean autoDelete, 是否自动删除
//IDictionary< String, Object > arguments 交换机参数
channel.ExchangeDeclare("headersExchange", ExchangeType.Headers, true, false, null);
//声明队列
//String queue, 队列名称
//Boolean durable, 是否持久化
//Boolean exclusive, 是否专有的(排外)
//Boolean autoDelete, 是否自动删除
//IDictionary<String, Object> arguments 队列参数
channel.QueueDeclare("headersQueue", true, false, false, null);
//将队列绑定到交换机上
//String queue, 队列名称
//String exchange, 交换机名称
//String routingKey, routingKey
//IDictionary< String, Object > arguments 绑定参数
IDictionary<String, Object> arguments = new Dictionary<String, Object>()
{
{"x-match","any"}, //设置x-match属性为any,即头信息中只要有一个匹配就可以了
{ "username","fanqi"}
};
channel.QueueBind("headersQueue", "headersExchange", string.Empty, arguments); //设置消息属性
var properties = channel.CreateBasicProperties();
properties.Headers = new Dictionary<String, Object>();
properties.Headers.Add("username", "fanqi"); //发布消息
//String exchange, 交换机名称
//String routingKey, routingKey
//IBasicProperties basicProperties, 发布属性
//Byte[] body 消息内容
channel.BasicPublish("headersExchange", string.Empty, properties, Encoding.UTF8.GetBytes("来自.net的问候"));
Console.ReadKey();
(2)、接收者
var connectionFactory = new ConnectionFactory() { HostName = "192.168.205.128", UserName = "guest", Password = "guest" }; //创建连接工厂
var connection = connectionFactory.CreateConnection(); //创建connection
var channel = connection.CreateModel(); //创建channel
//声明交换机
//String exchange, 交换机名称
//String type, 交换机类型
//Boolean durable, 是否持久化
//Boolean autoDelete, 是否自动删除
//IDictionary< String, Object > arguments 交换机参数
channel.ExchangeDeclare("headersExchange", ExchangeType.Headers, true, false, null);
//声明队列
//String queue, 队列名称
//Boolean durable, 是否持久化
//Boolean exclusive, 是否专有的(排外)
//Boolean autoDelete, 是否自动删除
//IDictionary<String, Object> arguments 队列参数
channel.QueueDeclare("headersQueue", true, false, false, null);
//将队列绑定到交换机上
//String queue, 队列名称
//String exchange, 交换机名称
//String routingKey, routingKey
//IDictionary< String, Object > arguments 绑定参数 IDictionary<String, Object> arguments = new Dictionary<String, Object>()
{
{"x-match","any"}, //设置x-match属性为any,即头信息中只要有一个匹配就可以了
{ "username","fanqi"}
};
channel.QueueBind("headersQueue", "headersExchange", string.Empty, arguments);
//1.直接获取消息
//var result = channel.BasicGet("headersQueue", true);
//Console.WriteLine(Encoding.UTF8.GetString(result.Body));
//2.使用事件机制获取消息
EventingBasicConsumer consumer = new EventingBasicConsumer(channel);
consumer.Received += (sender, e) =>
{
Console.WriteLine(Encoding.UTF8.GetString(e.Body));
};
channel.BasicConsume("headersQueue", true, consumer);
Console.ReadKey();
RabbitMQ Headers Exchange示例的更多相关文章
- RabbitMQ headers Exchange
Headers Exchange headers也是一种交换机类型,但是在rabbitmq官网中的教程中并没有说到.资料也很少,但是找一找总会有的. headers与direct的模式不同,不是使用r ...
- RabbitMQ学习之:(九)Headers Exchange (转贴+我的评论)
From: http://lostechies.com/derekgreer/2012/05/29/rabbitmq-for-windows-headers-exchanges/ RabbitMQ f ...
- RabbitMQ系列(三)RabbitMQ交换器Exchange介绍与实践
RabbitMQ交换器Exchange介绍与实践 RabbitMQ系列文章 RabbitMQ在Ubuntu上的环境搭建 深入了解RabbitMQ工作原理及简单使用 RabbitMQ交换器Exchang ...
- RabbitMQ交换器Exchange介绍与实践
RabbitMQ交换器Exchange介绍与实践 RabbitMQ系列文章 RabbitMQ在Ubuntu上的环境搭建 深入了解RabbitMQ工作原理及简单使用 RabbitMQ交换器Exchang ...
- Rabbitmq交换器Exchange和消息队列
通常我们谈到队列服务, 会有三个概念: 发消息者.队列.收消息者,RabbitMQ 在这个基本概念之上, 多做了一层抽象, 在发消息者和 队列之间, 加入了交换器 (Exchange). 这样发消息者 ...
- RabbitMQ(Exchange交换机详解)(四)
Exchange:接收消息,并根据路由键转发消息所绑定的队列 ClientA,B将消息投递到交换机Exchange上,通过路由关系,投递到指定的queue1或者queue2上,通过监听投递到Clien ...
- RabbitMQ之Exchange
交换机的作用: 生产者发送消息不会向传统方式直接将消息投递到队列中,而是先将消息投递到交换机中,在由交换机转发到具体的队列,队列在将消息以推送或者拉取方式给消费者进行消费,这和我们之前学习Nginx有 ...
- RabbitMQ通过Exchange.headers属性代替routekey,x-match实现队列精准匹配
消费者: static void Main(string[] args) { ConnectionFactory factory = new ConnectionFactory() { HostNam ...
- .NET Core RabbitMQ探索(2)——RabbitMQ的Exchange
实际上,RabbitMQ的生产者并不会直接把消息发送给队列,甚至生产者都不知道消息是否会被发送给一个队列.对于生产者而言,它们只能把消息发送到Exchange,一个Exchange所完成的工作相当简单 ...
随机推荐
- 2-Eighteenth Scrum Meeting-20151218
任务安排 成员 今日完成 明日任务 闫昊 写完学习进度记录的数据库操作 写完学习进度记录的数据库操作 唐彬 编写与服务器交互的代码 和服务器老师交流讨论区后台接口 史烨轩 获取视频url 尝试使用 ...
- 读书笔记(chapter18)
调试 18.1准备开始 18.2内核中的bug 1.从隐藏在源代码中的错误到展现在目击者面前的bug,往往是经历一系列连锁反应的事件才可能触发的 18.3通过打印来调试 1.健壮性 健壮性是print ...
- 20135337朱荟潼 Linux第四周学习总结——扒开系统调用的三层皮(上)
朱荟潼 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课http://mooc.study.163.com/course/USTC 1000029000 知识点梳理 一.用 ...
- 使用VS2013进行C#程序的单元测试
没有按照预期的那样做出成功的单元测试,磕磕绊绊参照了下面两篇博客大致做出来了,所以很有必要记录一下过程. http://www.cnblogs.com/duasonir/p/5299732.html( ...
- 打包spring项目遇到的坑 Unable to locate Spring NamespaceHandler for XML schema ……shcema/context 产生的原因及解决方法
图1 图2 问题原因:导致该问题的原因就是打包的时候,同时将 spring-context 和 spring-aop包提取到了我们的程序应用的包中,在package过程中,这2个依赖包的 XML sc ...
- js生成hash序列
炒鸡简单的js生成hash序列的方法.如下: function createHash (hashLength) { if (!hashLength || typeof(Number(hashLengt ...
- SP4487 GSS6 - Can you answer these queries VI
题目大意 给出一个由N个整数组成的序列A,你需要应用M个操作: I p x 在 p 处插入插入一个元素 x D p 删除 p 处的一个元素 R p x 修改 p 处元素的值为 x Q l r 查询一 ...
- 自学Zabbix3.10.1.5-事件通知Notifications upon events-媒介类型Script
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix3.10.1.5-事件通知Notifications upon events-媒介 ...
- HGOI20181031 模拟题解
sol:第一题就DP?!然后写了O(n^2) dp再考虑优化!!!(尽量部分分带上!!!) 我写了正确的dp然后优化错了,具体的dp方法是考虑到对于右侧到左侧他是没有后效性的 所以定义f[i]为i及以 ...
- JAVA AES CBC PKCS5Padding加解密
package com.hzxc.groupactivity.util; /** * Created by hdwang on 2019/1/17. */ import org.slf4j.Logge ...