Beispiel #1
0
        public bool SendMessage(MQProtocol <M> message, string hostName)
        {
            var routeKey = GetRouter(message.RouterKey, hostName);
            var host     = MQHostConfigManager.GetHost(hostName);

            return(GrantMQManager <M> .Publish(message, routeKey, host));
        }
Beispiel #2
0
        /// <summary>
        /// 保存异步消息,并设置初始处理状态
        /// </summary>
        /// <param name="valueArgs">参数</param>
        /// <returns>是否成功</returns>
        public static bool SetMessage(SetBackGroudMessageArgs valueArgs)
        {
            var msg      = new MQProtocol <SetBackGroudMessageArgs>("SetBackGroudMessage", valueArgs, valueArgs.Args.rid);
            var routeKey = GetRouter(valueArgs.BussinessType);
            var mq       = GrantMQManager <SetBackGroudMessageArgs> .Publish(msg, routeKey);

            if (!mq)
            {
                logger.LogError($"BackGroundMessageMgr.SetMessage.MQ.Error.rid = {valueArgs.Args.rid}");
                return(false);
            }

            logger.LogInformation($"BackGroundMessageMgr.SetMessage.MQ.Success.rid = {valueArgs.Args.rid}");

            var processMsg = new BackGroundMessageProcessResult() // 初始化一个未开始状态,所有值都为-1,表示还在队列中,未开始
            {
                ProcessNum = -1,
                SuccessNum = -1,
                TotalNum   = -1,
                Data       = string.Empty,
                Rid        = valueArgs.Args.rid,
            };

            return(SetProcessStatus(processMsg));
        }
Beispiel #3
0
        public bool SendMessage(M message, string eventName, string routerKey, string hostName)
        {
            var msg = new MQProtocol <M>(eventName, message, ServerSetting.AppName);

            msg.RouterKey = routerKey;
            return(SendMessage(msg, hostName));
        }
Beispiel #4
0
 /// <summary>
 /// 指定虚拟机,发送特定routerKey的消息
 /// </summary>
 /// <param name="msg"></param>
 /// <param name="exChangeName"></param>
 /// <param name="host"></param>
 /// <param name="queueName"></param>
 /// <returns></returns>
 public static bool PublishFanout(MQProtocol <M> msg, string exChangeName, VirtualHost host, string queueName = MQueueConst.DefaultGrantMQ)
 {
     msg.ExChange = exChangeName;
     using (FanoutPublisher <MQProtocol <M> > p = new FanoutPublisher <MQProtocol <M> >(msg, exChangeName, queueName, queueName, false, host))
     {
         return(p.Publish());
     }
 }
Beispiel #5
0
        /// <summary>
        /// 发布一条默认配置的消息
        /// </summary>
        /// <typeparam name="M"></typeparam>
        /// <param name="msg">msg</param>
        /// <returns>bool</returns>
        // public static bool Publish(MQProtocol<M> msg)
        // {
        //    // GrantDefaultPublisher<MQProtocol<M>> p = new GrantDefaultPublisher<MQProtocol<M>>(msg,false);
        //    // return p.Publish();
        //    return Publish(msg, RouterKeyConst.DefaultRouterKey);
        // }

        /// <summary>
        ///  发布一条指定了特定routerKey的消息
        /// </summary>
        /// <param name="msg">消息内容</param>
        /// <param name="routerKey">消息特定标识</param>
        /// <returns>bool</returns>
        public static bool Publish(MQProtocol <M> msg, string routerKey)
        {
            msg.ExChange  = ExchangeConst.DefaultExchange;
            msg.RouterKey = routerKey;
            using (GrantDefaultPublisher <MQProtocol <M> > p = new GrantDefaultPublisher <MQProtocol <M> >(msg, routerKey, false))
            {
                return(p.Publish());
            }
        }
Beispiel #6
0
        /// <summary>
        /// 指定虚拟机发送默认消息
        /// </summary>
        /// <param name="msg">msg</param>
        /// <param name="host">host</param>
        /// <returns>bool</returns>
        // public static bool Publish(MQProtocol<M> msg, VirtualHost host)
        // {
        //   return Publish(msg, RouterKeyConst.DefaultRouterKey, host);
        // }

        /// <summary>
        /// 注册一个默认配置的消费者,等待消息的到来
        /// </summary>
        /// <typeparam name="M">返回消息的实体类型</typeparam>
        /// <param name="autoDelete">是否自动删除,true为自动删除,false不会自动删除,需要业务自己删除</param>
        /// <param name="fn">
        /// 处理返回消息的回调,注意如果autoDelete指定为false说明调用方需要自己确定
        /// 消息什么时候删除,这里就需要fn返回是否删除,autoDelete指定为true时,fn这个返回值将不起作用
        /// </param>
        /// <returns></returns>
        // public static void ConsumeRegister(bool autoDelete,Func<MQProtocol<M>, Exception, bool> fn)
        // {
        //    // GrantDefaultConsumer<MQProtocol<M>> c = new GrantDefaultConsumer<MQProtocol<M>>(autoDelete);
        //    // c.OnGrantMsgReceive += (MQProtocol<M> m, Exception ex) =>
        //    // {
        //    //   return fn(m, ex);
        //    // };
        //    // consumers.Add(c);
        //    // c.Register();
        //    ConsumeRegister(RouterKeyConst.DefaultRouterKey, autoDelete, fn);
        // }

        /// <summary>
        /// 指定虚拟机,发送特定routerKey的消息
        /// </summary>
        /// <param name="msg">msg</param>
        /// <param name="routerKey">routerKey</param>
        /// <param name="host">host</param>
        /// <returns>bool</returns>
        public static bool Publish(MQProtocol <M> msg, string routerKey, VirtualHost host)
        {
            msg.ExChange  = ExchangeConst.DefaultExchange;
            msg.RouterKey = routerKey;
            using (GrantPublisher <MQProtocol <M> > p = new GrantPublisher <MQProtocol <M> >(msg, ExchangeConst.DefaultExchange, routerKey, MQueueConst.DefaultGrantMQ, false, host))
            {
                // consumers.Add(p);
                return(p.Publish());
            }
        }
Beispiel #7
0
        /// <summary>
        /// 保存异步消息,并设置初始处理状态
        /// </summary>
        /// <param name="valueArgs">参数</param>
        /// <returns>是否成功</returns>
        public static bool SetMessage(T valueArgs)
        {
            if (valueArgs == null)
            {
                return(true);
            }

            var msg      = new MQProtocol <T>("AuditMessage", valueArgs, Guid.NewGuid().ToString("N"));
            var routeKey = GetRouter(valueArgs.Ttid);
            var host     = MQHostConfigManager.GetHost("Audit");
            var mq       = GrantMQManager <T> .Publish(msg, routeKey, host);

            return(mq);
        }
        /// <summary>
        /// 发现点对点消息
        /// </summary>
        /// <param name="valueArgs">参数</param>
        /// <returns>是否成功</returns>
        public static bool SetDirectMessage(SetBackGroudMessageArgs valueArgs)
        {
            var msg      = new MQProtocol <SetBackGroudMessageArgs>("SetDirectMessage", valueArgs, valueArgs.Args.rid);
            var routeKey = BackGroundDirectMessage.GetRouter(valueArgs.MQRouterName);
            var mq       = MQManager <SetBackGroudMessageArgs> .Publish(msg, routeKey);

            if (!mq)
            {
                logger.LogError($"SuperDirectMessageHelper.SetDirectMessage.MQ.Error.rid = {valueArgs.Args.rid}");
                return(false);
            }

            logger.LogInformation($"SuperDirectMessageHelper.SetDirectMessage.MQ.Success.rid = {valueArgs.Args.rid}");
            return(true);
        }
        /// <summary>
        /// 发送广播消息
        /// </summary>
        /// <param name="valueArgs">参数</param>
        /// <returns>是否成功</returns>
        public static bool SetFanoutMessage(SetBackGroudMessageArgs valueArgs)
        {
            var msg      = new MQProtocol <SetBackGroudMessageArgs>("SetFanoutMessage", valueArgs, valueArgs.Args.rid);
            var exChange = BackGroundFanoutMessage.GetExchange(valueArgs.MQRouterName);
            var mq       = MQManager <SetBackGroudMessageArgs> .PublishFanout(msg, exChange);

            if (!mq)
            {
                logger.LogError($"SuperMessageHelper.SetFanoutMessage.MQ.Error.rid = {valueArgs.Args.rid}");
                return(false);
            }

            logger.LogInformation($"SuperMessageHelper.SetFanoutMessage.MQ.Success.rid = {valueArgs.Args.rid}");
            return(true);
        }