文件内容 RabbitConfig.cs 5 KB 4819 字符
using System.ComponentModel;

namespace PasteApeart.Application.Contracts
{
    /// <summary>
    /// 
    /// </summary>
    public class RabbitConfig
    {

        /// <summary>
        /// 是否使用RabbitMQ 否则使用本地的Channel
        /// </summary>
        public bool RabbitQueue { get; set; } = false;

        /// <summary>
        /// 地址
        /// </summary>
        [Description("地址")]
        public string HostName { get; set; }

        /// <summary>
        /// 端口
        /// </summary>
        [Description("端口")]
        public int Port { get; set; }

        /// <summary>
        /// 作用域
        /// </summary>
        [Description("作用域")]
        public string VirtualHost { get; set; } = "/";

        /// <summary>
        /// 账号
        /// </summary>
        [Description("账号")]
        public string UserName { get; set; }

        /// <summary>
        /// 密码
        /// </summary>
        [Description("密码")]
        public string Password { get; set; }

        /// <summary>
        /// true:Durable(持久化) false:Transient(瞬时模式)
        /// </summary>
        public bool Durable { get; set; } = true;

        /// <summary>
        /// 超时队列的交换机模型
        /// direct
        /// </summary>
        public string ExpireExchangeType { get; set; } = "direct";

        ///// <summary>
        ///// 直连模式的交换类型 topic
        ///// </summary>
        //public string DirectExchangeType { get; set; } = "topic";

        /// <summary>
        /// channel.expire 延迟队列发送的路由key
        /// *:匹配一个单词
        /// #:匹配多个单词,单词之间用.隔开
        /// 匹配模式的时候exchangetype需要为topic
        /// </summary>
        public string ExpireRouteKey { get; set; } = "channel.expire";

        ///// <summary>
        ///// 直连模式的分配规则 channel.*
        ///// </summary>
        //public string DirectRouteKey { get; set; } = "channel.*";

        /// <summary>
        /// 超时队列
        /// </summary>
        public List<RabbitExcepireItem> ExpireTimeList { get; set; }

        /// <summary>
        /// 超时队列的exchange 过期后写入到待读取队列
        /// talk_expire_exchange 写入到过期后的队列
        /// </summary>
        public string ExpiredExchange { get; set; } = "talk_expire_exchange";

        /// <summary>
        /// 超时队列的最终队列 这个队列的是过期后的数据
        /// talk_expired_queue
        /// </summary>
        public string ExpiredWatchQueue { get; set; } = "talk_expired_queue";

        /// <summary>
        /// 客户端名称
        /// </summary>
        public string ClientName { get; set; }

        /// <summary>
        /// 配送模式 1不持续模式 2持续模式
        /// </summary>
        public int DeliveryMode { get; set; } = 2;

        /// <summary>
        /// 是否启用后台线程处理IO
        /// </summary>
        public bool UseBackgroundThreadsForIO { get; set; } = true;

        /// <summary>
        /// 写入通道数量
        /// </summary>
        public int MaxChannelCount { get; set; } = 2;

        /// <summary>
        /// 读取Channel通道数
        /// </summary>
        public int ReadChannelCount { get; set; } = 2;


        /// <summary>
        /// 使用广播模式
        /// </summary>
        public bool SubscribeEnable { get; set; } = false;

        /// <summary>
        /// 广播模式的交换机名称
        /// </summary>
        public string SubscribeExchange { get; set; } = "ud_exchange_subscribe";

        /// <summary>
        /// 广播模式的队列名称 每个容器不一样,动态赋值!!!
        /// </summary>
        public string SubscribeQueue { get; set; }

        /// <summary>
        /// 本地队列 如果是-1表示无限
        /// </summary>
        public int ChannelCapacity { get; set; } = 10000;

    }

    /// <summary>
    /// 
    /// </summary>
    public class RabbitExcepireItem
    {
        ///// <summary>
        ///// 队列名称 用于写入的时候查询
        ///// </summary>
        //[Description("队列名称 用于写入的时候查询")]
        //public string Key { get; set; } = "";

        ///// <summary>
        ///// 排序 在一个阶梯停留多久? 0不参与排序 1,2,3,4,5
        ///// </summary>
        //[Description("排序 在一个阶梯停留多久? 0不参与排序 1,2,3,4,5")]
        //public int Zindex { get; set; }

        /// <summary>
        /// 超时队列的待超时队列 在这个队列中等待过期
        /// talk_wait_hour_queue 这个是hour模式
        /// </summary>
        public string ExpireExchange { get; set; } = "";

        /// <summary>
        /// 超时队列的待超时队列 在这个队列中等待过期
        /// talk_wait_hour_queue 这个是hour模式
        /// </summary>
        public string ExpireQueue { get; set; } = "";

        ///// <summary>
        ///// 超时时间 单位毫秒
        ///// </summary>
        //[Description("超时时间 单位毫秒")]
        //public long ExpireTime { get; set; }

        /// <summary>
        /// 超时时间 单位秒
        /// </summary>
        public long ExpireSecond { get; set; }

        ///// <summary>
        ///// 停留次数 比如5表示命中5次后往前或者往后 有数据变动往前,没数据往后
        ///// </summary>
        //[Description("停留次数 比如5表示命中5次后往前或者往后 有数据变动往前,没数据往后")]
        //public int StayTime { get; set; }
    }

}
​ ​