/// <summary> /// 直接发送消息 /// </summary> static void PublishMessageDirect() { var result = EventClientService.Publish("通行证登录", new Hashtable { { "UserID", "xxx" }, { "UserName", "yyy" }, { "NickName", "这是中文" } }, category: "Joy1.Passport.All", eventName: "Login"); if (result.ResultNo == 0) { Console.WriteLine("消息发送成功"); } else { Console.WriteLine("消息发送失败:" + result.ResultDescription); } }
//分发一条消息到各个订阅队列 protected void DispatchMessage(IEventRepository repository, List <EventMessage> list, EventMessageHeader message) { var subs = EventClientService.GetDispatchedSubscribers(message.Message, list); //消息被分发到的订阅队列 if (subs.Count > 0) { var names = subs.Select(x => x.ChannelID).ToArray(); repository.PushToSubscribeQueues(message, names); //分发到订阅队列 foreach (var subscriber in subs) { var sub = subscriber; Task.Factory.StartNew(() => this.Callee.SendMessage(repository, sub)); //异步主动推送消息给调用方 } } }