RabbitMQ框架学写笔记-20161201
1.RabbitMQ NUget .Net客户端4.1.1版本 对应的 .netframework版本是 4.5.1 以及以上
2.本地实现的效果图
3.实践代码:
P-生产者:
using RabbitMQ.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace RabbitMQClient
{
/// <summary>
/// RabbitMQ的Topic
/// </summary>
class Program
{ private readonly static ConnectionFactory rabbitMqFactory = new ConnectionFactory()
{
HostName = "127.0.0.1",
UserName = "---",
Password = "",
Port =
}; /// <summary>
/// 路由名称
/// </summary>
const string TopExchangeName = "topic.justin.exchange"; const string TopQueueName = "topic.justin.queue"; public static void TopicExchangeSendMsg()
{
using(IConnection conn=rabbitMqFactory.CreateConnection())
{
using(IModel channel = conn.CreateModel())
{
channel.ExchangeDeclare(TopExchangeName,"topic",durable:true,autoDelete:false,arguments:null);
channel.QueueDeclare(TopQueueName,durable:true,autoDelete:false,exclusive:false,arguments:null);
channel.QueueBind(TopQueueName,TopExchangeName,routingKey:TopQueueName);
Console.WriteLine("请输入要发送的消息!");
string vadata = Console.ReadLine();
while(vadata!="exit")
{
var msgBody = Encoding.UTF8.GetBytes(vadata);
channel.BasicPublish(exchange:TopExchangeName,routingKey:TopQueueName,basicProperties:null,body:msgBody);
Console.WriteLine(string.Format("**发送时间:{0},发送完成,输入exit退出消息发送",DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
vadata = Console.ReadLine();
}
}
}
} static void Main(string[] args)
{
TopicExchangeSendMsg();
}
}
}
C-消费者代码:
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace RabbitMQClient_C
{
/// <summary>
/// Customer接受消息代码
/// </summary>
class Program
{
private readonly static ConnectionFactory rabbitMqFactory = new ConnectionFactory()
{
HostName="127.0.0.1", UserName="---",Password="",Port=
}; /// <summary>
/// 路由名称
/// </summary>
const string TopExchangeName = "topic.justin.exchange"; /// <summary>
/// 队列名称
/// </summary>
const string TopQueueName = "topic.justin.queue"; public static void TopicAcceptExchange()
{
using(IConnection conn = rabbitMqFactory.CreateConnection())
{
using(IModel channel = conn.CreateModel())
{
channel.ExchangeDeclare(TopExchangeName,"topic",durable:true,autoDelete:false,arguments:null);
channel.QueueDeclare(TopQueueName,durable:true,autoDelete:false,exclusive:false,arguments:null);
channel.BasicQos(prefetchSize:,prefetchCount:,global:false);//作用:
channel.QueueBind(TopQueueName,TopExchangeName,routingKey:TopQueueName);
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
var msgBody = Encoding.UTF8.GetString(ea.Body);
Console.WriteLine(string.Format("**接收时间:{0},消息内容:{1}",
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), msgBody));
int dots = msgBody.Split('.').Length -;
System.Threading.Thread.Sleep(dots*);
Console.WriteLine(" [x] Done");
channel.BasicAck(deliveryTag:ea.DeliveryTag,multiple:false);
};
channel.BasicConsume(TopQueueName,noAck:false,consumer:consumer); Console.WriteLine("按任意键,退出程序");
Console.ReadLine();
}
}
} static void Main(string[] args)
{
TopicAcceptExchange();
}
}
}
RabbitMQ框架学写笔记-20161201的更多相关文章
- RabbitMQ框架学写笔记-20161130
- springMVC中ModelAndView学写笔记
api介绍: 构造函数摘要 ModelAndView() bean样式用法的默认构造函数:填充bean属性,而不是传递构造函数参数. ModelAndView(Object vie ...
- Mina框架的学习笔记——Android客户端的实现
Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络 ...
- CI框架源代码阅读笔记3 全局函数Common.php
从本篇開始.将深入CI框架的内部.一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说.全局函数具有最高的载入优先权.因此大多数的框架中BootStrap ...
- 跟我一起学写jQuery插件开发方法(转载)
jQuery如此流行,各式各样的jQuery插件也是满天飞.你有没有想过把自己的一些常用的JS功能也写成jQuery插件呢?如果你的答案是肯定的,那么来吧!和我一起学写jQuery插件吧! 很 ...
- RabbitMQ框架构建系列(一)——AMPQ协议
一.MQ 在介绍RabbitMq之前,先来说一下MQ.什么是MQ?MQ全称为Message Queue即消息队列,就是一个消息的容器, MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入 ...
- Java框架spring 学习笔记(十八):事务管理(xml配置文件管理)
在Java框架spring 学习笔记(十八):事务操作中,有一个问题: package cn.service; import cn.dao.OrderDao; public class OrderSe ...
- canvas知识03:学写一个字案例
效果
- 一点一点学写Makefile-1
相信很多Linux开发者 都得自己来写Makefile,刚开始学习学写这个的时候都会碰到很多困难,我之前没有自己独立完成过Makefile,都是在公司已有的模板上添加.现在突然有一个很大的想法就是从零 ...
随机推荐
- ABP理论学习之数据传输对象(DTO)
返回总目录 本篇目录 为何需要DTO 领域层抽象 数据隐藏 序列化和懒加载问题 DTO惯例和验证 DTO和实体的自动映射 使用特性和扩展方法进行映射 帮助接口 DTO用于应用层和 展现层间的数据传输. ...
- mina框架详解
转:http://blog.csdn.net/w13770269691/article/details/8614584 mina框架详解 分类: web2013-02-26 17:13 12651人 ...
- 你必须知道的指针基础-4.sizeof计算数组长度与strcpy的安全性问题
一.使用sizeof计算数组长度 1.1 sizeof的基本使用 如果在作用域内,变量以数组形式声明,则可以使用sizeof求数组大小,下面一段代码展示了如何使用sizeof: ,,,,,}; int ...
- [ASP.NET MVC 小牛之路]16 - Model 验证
上一篇博文 [ASP.NET MVC 小牛之路]15 - Model Binding 中讲了MVC在Model Binding过程中如何根据用户提交HTTP请求数据创建Model对象.在实际的项目中, ...
- Pycharm5注册方式
0x1 ,安装 0x2 , 调整时间到2038年. 0x3 ,申请30天试用 0x4, 退出pycharm 0x5, 时间调整回来. ##注册方法2### 注册方法: 在 注册时选择 Licen ...
- Java 浅析三大特性之一封装
在说Java 三个特性之前,我们先了解一下什么是面向对象,以及为什么Java是面向对象的语言. 面向对象是区别于面向过程的一种编程的思想.我们可以通过这个例子冰箱装大象的例子来了解一下面向对象与面向过 ...
- 我所理解的Cocos2d-x
我所理解的Cocos2d-x(完全基于Cocos2d-x3.0,深度剖析计算机图形学,OpenGL ES及游戏引擎架构,全面提升游戏开发相关知识) 秦春林 著 ISBN 978-7-121-246 ...
- MFC的定时器OnTimer
本文总结来源出自鸡啄米,感谢鸡啄米.来源:http://www.jizhuomi.com/software/232.html 定时器简介 定时器,可以帮助开发者或者用户定时完成某项任务.在使用定时器时 ...
- OpenCASCADE Rational Bezier Curves
OpenCASCADE Rational Bezier Curves eryar@163.com Abstract. Although polynomials offer many advantage ...
- 通过3个Hello World应用来了解ASP.NET 5应用是如何运行的(1)
微软在开发ASP.NET 5(当时被称为ASP.NET vNext)是采用的代号为Project K,所以运行时被称为KRuntime.KRuntime是一个SDK,它包含了编译和运行应用程序的所有资 ...