Ejemplo n.º 1
0
        /// <summary>
        /// 常见Messanger抽象类
        /// </summary>
        /// <param name="option"></param>
        protected Messenger(MessengerOption option)
        {
            this.Option = option;
            // 初始化i18n模块
            I18NOption i18NOption = new I18NOption(typeof(Messenger).Assembly, "i18n_messenger_zh", "i18n_messenger_en")
            {
                Name = UtilityConstants.MessengerName
            };

            I18N.InitInstance(i18NOption);
            this._messageDispatcher = new MessageDispatcher(this);
        }
Ejemplo n.º 2
0
 public JsonMessageFormatter(MessengerOption option, Encoding encoding)
 {
     this.encoding       = encoding;
     this._option        = option;
     _serializerSettings = new JsonSerializerSettings()
     {
         NullValueHandling  = NullValueHandling.Include,
         DateFormatHandling = DateFormatHandling.IsoDateFormat,
         DateFormatString   = CommonConst.GlobalTimeFormat,
         DateParseHandling  = DateParseHandling.None
     };
 }
Ejemplo n.º 3
0
        /// <summary>
        /// 使用option获取已配置的信使类
        /// </summary>
        public static Messenger GetMessenger(MessengerOption option)
        {
            Messenger messenger = null;

            //此处不存在并发写入的同一个元素的情况,所以未加锁保护
            if (null != (messenger = _messengers.FirstOrDefault(item => item.Option.Equals(option))))
            {
                return(messenger);
            }
            lock (_lock)
            {
                Thread.MemoryBarrier();
                if (null != (messenger = _messengers.FirstOrDefault(item => item.Option.Equals(option))))
                {
                    return(messenger);
                }
                switch (option.Type)
                {
                case MessengerType.MSMQ:
                    messenger = new MsmqMessenger(option);
                    break;

                case MessengerType.Kafka:
                    // TODO 待实现
                    throw new NotImplementedException();
                    break;

                default:
                    throw new NotImplementedException();
                    break;
                }
                messenger.Initialize();
                _messengers.Add(messenger);
                return(messenger);
            }
        }
Ejemplo n.º 4
0
 /// <summary>
 /// 判断两个Option是否相等
 /// </summary>
 /// <param name="comparer">待比较对象</param>
 public bool Equals(MessengerOption comparer)
 {
     return(this.Path.Equals(comparer.Path) && this.HostAddress.Equals(comparer.HostAddress) &&
            this.Type == comparer.Type);
 }
Ejemplo n.º 5
0
 /// <summary>
 /// 是否包含某个Messenger的声明
 /// </summary>
 public static bool Exist(MessengerOption option)
 {
     return(null != _messengers.FirstOrDefault(item => item.Option.Equals(option)));
 }