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)); }
/// <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)); }
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)); }
/// <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()); } }
/// <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()); } }
/// <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()); } }
/// <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); }