using Microsoft.Extensions.DependencyInjection; using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; namespace Pole.ReliableMessage { public class ReliableMessageOption { public List ReliableMessageOptionExtensions { get; private set; } = new List(); public List EventCallbackAssemblies { get; private set; } public List EventHandlerAssemblies { get; private set; } /// /// 待发送消息重试间隔 单位 秒 /// public int PendingMessageRetryInterval { get; set; } = 10; /// /// 待发送消息最大重试次数 , 0 为 无上限 /// public int PendingMessageRetryTimes { get; set; } = 0; /// /// 预发送消息超时时间 单位 秒 /// public int PendingMessageTimeOut { get; set; } = 10 * 60; /// /// 预发送消息检查时每一次获取的消息数量 /// public int PendingMessageCheckBatchCount { get; set; } = 1000; /// /// 预发送消息状态检查最后时间 单位 秒 /// public int PendingMessageCheckingTimeOutSeconds { get; set; } = 13 * 60; /// /// 已发送的消息缓冲区 flush to storage 的时间间隔 单位 秒 /// public int PushedMessageFlushInterval { get; set; } = 2; /// /// PendingMessage 第一次处理等待时间 单位 秒 /// public int PendingMessageFirstProcessingWaitTime { get; set; } = 2 + 10; /// /// 每次重试之间最大间隔 单位 秒 /// public int MaxPendingMessageRetryDelay { get; set; } = 2 * 60; /// /// PendingMessageCheck 实例更新 存活时间的时间间隔 单位 秒 /// public int PendingMessageCheckerInstanceIAnAliveTimeUpdateDelay { get; set; } = 10; /// /// PendingMessageCheck 实例存活超时时间 单位 秒 /// public int PendingMessageCheckerInstanceIAnAliveTimeout { get; set; } = 3 * 10; /// /// Message 定期清理时间间隔 单位 秒 /// public int MessageCleanInterval { get; set; } = 30 * 60; /// /// 当主机有多个网络时通过指定网关地址找到合适的服务ip地址 /// public string NetworkInterfaceGatewayAddress { get; set; } = string.Empty; public ReliableMessageOption AddEventAssemblies(params Assembly[] assemblies) { EventCallbackAssemblies = assemblies.ToList(); return this; } public ReliableMessageOption AddEventAssemblies(IEnumerable assemblies) { EventCallbackAssemblies = assemblies.ToList(); return this; } public ReliableMessageOption AddEventHandlerAssemblies(params Assembly[] assemblies) { EventHandlerAssemblies = assemblies.ToList(); return this; } public ReliableMessageOption AddEventHandlerAssemblies(IEnumerable assemblies) { EventHandlerAssemblies = assemblies.ToList(); return this; } } }