Пример #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="BackGroundMessageMgr"/> class.
        /// 创建接受消息实例
        /// </summary>
        /// <param name="bussinessTypes">接受消息的所有bussinessTypes</param>
        public BackGroundMessageMgr(params string[] bussinessTypes)
        {
            Task.Run(() =>
            {
                // 订阅所有的routerKey
                foreach (var item in bussinessTypes)
                {
                    MQManager <SetBackGroudMessageArgs> .ConsumeRegister(
                        GetRouter(item),
                        GetQueue(item),
                        false,
                        (MQProtocol <SetBackGroudMessageArgs> m, Exception ex) =>
                    {
                        // if (ex != null)
                        // {
                        //    if (m != null)
                        //    {
                        // string msg = m.ToString();
                        // Console.WriteLine(msg);
                        // return true;
                        if (this.OnBackGroundMessageReceive != null)
                        {
                            return(this.OnBackGroundMessageReceive(m, ex));
                        }

                        // }
                        // }
                        return(false);    // 如果没有回调,不能随意删除消息
                    });
                }
            });
        }
Пример #2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="MQExtend{M}"/> class.
        ///  初始化一个消息队列
        /// </summary>
        /// <param name="routerKeys">routerKeys</param>
        /// <param name="hostName">hostName</param>
        public MQExtend(string hostName, params string[] routerKeys)
        {
            foreach (var itemKey in routerKeys)
            {
                MQManager <M> .ConsumeRegister(
                    GetRouter(itemKey, hostName),
                    GetQueue(itemKey, hostName),
                    false,
                    (MQProtocol <M> m, Exception ex) =>
                {
                    // if (ex != null)
                    // {
                    //    if (m != null)
                    //    {
                    // string msg = m.ToString();
                    // Console.WriteLine(msg);
                    // return true;
                    if (this.OnGrantMQMessageReceive != null)
                    {
                        return(this.OnGrantMQMessageReceive(m, ex));
                    }

                    // }
                    // }
                    return(false);    // 如果没有回调,不能随意删除消息
                });
            }
        }
Пример #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="BackGroundDirectMessage"/> class.
 /// 创建接受消息实例
 /// </summary>
 /// <param name="bussinessTypes">接受消息的所有bussinessTypes</param>
 public BackGroundDirectMessage(params MessageRouterMap[] messageRouterMap)
 {
     if (messageRouterMap?.Any(x => string.IsNullOrEmpty(x.BussinessApiName) || string.IsNullOrEmpty(x.MQRouterName)) ?? true)
     {
         throw new Exception("BackGroundDirectMessage构造函数的参数不合法");
     }
     Task.Run(() =>
     {
         // 订阅所有的routerKey
         foreach (var item in messageRouterMap)
         {
             MQManager <SetBackGroudMessageArgs> .ConsumeRegister(
                 GetRouter(item.MQRouterName), //点对点的消息,必须安装消息发布者的router和队列
                 GetQueue(item.MQRouterName),  //同上
                 false,
                 (MQProtocol <SetBackGroudMessageArgs> m, Exception ex, object objCtx) =>
             {
                 if (this.OnBackGroundMessageReceive != null)
                 {
                     return(this.OnBackGroundMessageReceive(m, ex, objCtx));
                 }
                 return(false);    // 如果没有回调,不能随意删除消息
             }, item.BussinessApiName);
         }
     });
 }