Exemple #1
0
        /// <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);
            }
        }
Exemple #2
0
        //分发一条消息到各个订阅队列
        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));                    //异步主动推送消息给调用方
                }
            }
        }