最近花了一些时间封装了基于RabbitMq.Client5.2.0的RabbitMq帮助类UtilsSharp.RabbitMq,执行了下效果还是不错的,现在分享给大家,RabbitMq的基础知识这边就不赘述了,百度一下还是挺多的。下面以一个案例来简述下怎么使用UtilsSharp.RabbitMq,一般队列都是包括生产者和消费者的,所以今天就主要跟大家分享下这两块的代码:
1.首先第一步就是Nuget搜索:UtilsSharp.RabbitMq,下载最新版本的:
2.生产者:
/// <summary>
/// 执行生产者
/// </summary>
public void Execute()
{
//连接串,这个可以配置到全局
RabbitMqHelperConfig.RabbitMqConfig = new RabbitMqConfig
{
RabbitMqConnection = "amqp://连接串"
};
//创建对象
var rabbitMqHelper = new RabbitMqHelper();
//定义交换机名称
var exchangeName = "Occ.Order.Exchange";
//定义路由
var routingKey = "Occ.Order.RoutingKey";
//定义队列名称
var queueName = "Occ.Order.Queue";
//申明交换机
rabbitMqHelper.ExchangeDeclare(exchangeName);
//申明队列
rabbitMqHelper.QueueDeclare(queueName);
//绑定
rabbitMqHelper.QueueBind(queueName, exchangeName, routingKey);
//发布消息到队列
rabbitMqHelper.Send(exchangeName, routingKey, "消息");
}
3.消费者:
/// <summary>
/// 执行消费者
/// </summary>
public void Execute()
{
//连接串,这个可以配置到全局
RabbitMqHelperConfig.RabbitMqConfig = new RabbitMqConfig
{
RabbitMqConnection = "amqp://连接串"
};
//创建对象
var rabbitMqHelper = new RabbitMqHelper();
//定义交换机名称
var exchangeName = "Occ.Order.Exchange";
//定义路由
var routingKey = "Occ.Order.RoutingKey";
//定义队列名称
var queueName = "Occ.Order.Queue";
//申明交换机
rabbitMqHelper.ExchangeDeclare(exchangeName);
//申明队列
rabbitMqHelper.QueueDeclare(queueName);
//绑定
rabbitMqHelper.QueueBind(queueName, exchangeName, routingKey);
//要开启的消费者数量
var consumerCount = 50;
//每个消费者每次获取到的消息数量
var consumerHandleCount= 100;
for (var i = 0; i < consumerCount; i++)
{
rabbitMqHelper.BatchReceived(queueName, ReceiveCallBack, consumerHandleCount);
}
}
/// <summary>
/// 消费者委托
/// </summary>
/// <param name="contents">拉取到的内容</param>
public void ReceiveCallBack(List<string> contents)
{
//contents 是从队列里面每次拿到的消息集合,每次的数量由上面配置的consumerHandleCount决定
//这边主要是执行业务代码:把拉取到的消息进行处理
}
以上就UtilsSharp.RabbitMq的简单使用,大家试试吧!上面的消费者采用的是批量获取的模式,大家也可以试试单条获取的模式。单条的是调用这个方法:rabbitMqHelper.Received(xxx,xxx,xxx);