蚂蚁男孩.队列组件(Framework.Mayiboy.Queue)

它能做什么

  主要是用来方便使用队列而诞生,该组件封装了Queue和Redis中的队列,能够通过简单配置就可以高效快速使用起来。

 

使用说明

一、
    下载源码,自己手动编译,手动引用必要的程序集。(需要手动创建配置文件)

二、
    通过NuGet安装Packages
      1、在程序包管理器控制台中输入Install-Package Framework.Mayiboy.Queue 回车
      2、在管理解决方案的 NuGet程序包中安装,输入蚂蚁男孩,找到蚂蚁男孩.队列组件

配置文件说明

配置文件有四种配置来源,
1、项目配置文件configSections节点配置。(在web.config文件配置configSections节点指定配置参数)
2、应用根目录路径Framework.Mayiboy.Queue.config。(在应用程序跟路径使用Framework.Mayiboy.Queue.config配置文件)
3、应用程序配置文件路径。(配置文件路径使用Framework.Mayiboy.Queue.config配置文件)
4、环境变量指定配置文件路径。(在系统环境变量中配置Framework.Mayiboy.Queue.config配置文件路径,环境变量名FRAMEWORK.MAYIBOY_QUEUE_GLOBAL_CONFIG_FILE

配置文件参数说明

默认配置:

<?xml version="1.0" encoding="utf-8" ?>
<Framework.Mayiboy.Queue>
  <!-- IsLog[true,false]:是否开启全局日志路径
  ThrowException[true,false]:设置日志组件是否向应用抛出异常
  InnerLogPath[filepath]:全局日志路径(当IsLog="true"有效)
  -->
  <!-- 队列组件全局配置 -->
  <Global IsLog="True" ThrowException="true" InnerLogPath="D:\applogs\projecname.name.queue\" />
  
  <!-- 缓存配置 -->
  <Queues>
    <queue Name="RunTesttime" Type="RunTime" IsAutoDeal="false"/>
    <queue Name="RedisTestQueue" Type="Redis" IsAutoDeal="false" QueueID="ProjectName.QueueID" ServerIPsWrite="127.0.0.1:6379" ServerIPsReadOnly="127.0.0.1:6379" DefaultDb="1"/>
  </Queues>
</Framework.Mayiboy.Queue>

  

Global节点配置

        IsLog【true|false】:配置true时表示启用队列配置日志文件,当组件出现不可预料的异常或者是需要输出必要提示时,会将其信息写入到配置文件中。

        ThrowException:【true|false】:配置true时表示当队列组件出现不可预料的异常时,组件会将异常直接抛出,终止当前执行,不会写入到日志文件中。

        InnerLogPath:日志文件输出路径。

Queues节点配置

Name:队列名,用来获取队列。
        Type【RunTime|Redis】属性区分使用MemQueue、Redis。
        IsAutoDeal【false|true】是否自动处理,配置成true时,需要在入队列时传入处理函数,当入队时组件会自动处理队列中的消息。

RunTime表示使用使用内存队列

        Type="RunTime":队列使用的是Queue

Redis表示使用Redis中的队列

        使用的是Redis中的list的数据类型的的特点(按照插入顺序排序)。

        ProjectName.QueueID:队列名(Redis中的Key)
        ServerIPsWrite:写服务器地址,可以通过;分隔符配置多台服务器
        ServerIPsReadOnly:读服务器地址,可以通过;分隔符配置多台服务器
        DefaultDb:Redis Db节点(默认0)

获取队列

MemQueue:var MemQueue = QueueFactory.GetQueue("runtime");
RedisQueue:var RedisQueue = QueueFactory.GetQueue("ProjectNameQueue");

建议使用方式,新建一个QueueManager对象

public class QueueManager
{
	/// <summary>
	/// 内存队列
	/// </summary>
	public static readonly IQueue RunTesttime;

	/// <summary>
	/// Redis队列
	/// </summary>
	public static readonly IQueue RedisTestQueue;


	static QueueManager()
	{
		RunTesttime = QueueFactory.GetQueue("runtime");

		RedisTestQueue = QueueFactory.GetQueue("ProjectNameQueue");
	}
}
 
 
posted @ 2018-07-04 00:17  闲僧  阅读(364)  评论(0编辑  收藏  举报