Example #1
0
        public static async void ReceiveMsg(IEventAggregator aggregator)
        {
            eventAggregator = aggregator;

            MQHelper.ConnectionString = ConfigurationManager.ConnectionStrings["RabbitMQ"].ConnectionString;
            _mqHelper = new MQHelper();
            _mqHelper.ClientSubscriptionId = ConfigurationManager.ConnectionStrings["ClientName"].ConnectionString + "-" +
                ConfigurationManager.ConnectionStrings["User"].ConnectionString;
            _mqHelper.MessageArrived += RabbitMQ_MessageArrived;
            _mqHelper.Topics.Add("DSIM.Command.Update");
            _mqHelper.Topics.Add("DSIM.Command.Approve");
            _mqHelper.Topics.Add("DSIM.Command.Transmit");
            _mqHelper.Topics.Add("DSIM.Command.Sign");
            _mqHelper.Topics.Add("DSIM.Command.AgentSign");
            _mqHelper.Topics.Add("DSIM.Command.Check");
            _mqHelper.Topics.Add("DSIM.Command.SpeedCache");
            _mqHelper.Topics.Add("DSIM.Command.Active");
            _mqHelper.Topics.Add("DSIM.Command.Execute");
            _mqHelper.Subcribe();

            // 以下为测试代码
            //try
            //{
            //    ConnectionFactory factory = new ConnectionFactory { HostName = "39.108.177.237", Port = 5672, UserName = "******", Password = "******" };
            //    using (IConnection conn = factory.CreateConnection())
            //    {
            //        using (IModel im = conn.CreateModel())
            //        {
            //            List<string> allTopic = new List<string>()
            //            {
            //            "DSIM.Command.Update",
            //            "DSIM.Command.Approve",
            //            "DSIM.Command.Transmit",
            //            "DSIM.Command.Sign",
            //            "DSIM.Command.AgentSign",
            //            "DSIM.Command.Check",
            //            "DSIM.Command.SpeedCache",
            //            "DSIM.Command.Active",
            //            "DSIM.Command.Execute",};

            //            var queue = ConfigurationManager.ConnectionStrings["User"].ConnectionString;

            //            im.ExchangeDeclare("amq.topic", ExchangeType.Topic, durable: true);
            //            im.QueueDeclare(queue);
            //            foreach (var item in allTopic)
            //            {
            //                im.QueueBind(queue, "amq.topic", item);
            //            }

            //            await Task.Run(() =>
            //            {
            //                while (true)
            //                {
            //                    BasicGetResult res = im.BasicGet(queue, true);
            //                    if (res != null)
            //                    {
            //                        var json = Encoding.UTF8.GetString(res.Body);

            //                        var split = json.LastIndexOf("/");
            //                        var suffix = json.Substring(split + 1);
            //                        var content = json.Substring(0, split);

            //                        switch (suffix)
            //                        {
            //                            case ("DSIM.Command.Update"):
            //                                var data1 = JsonConvert.DeserializeObject<YDMSG.MsgDispatchCommand>(content);
            //                                eventAggregator.GetEvent<CacheCommand>().Publish(data1);
            //                                break;
            //                            case ("DSIM.Command.Approve"):
            //                                var data2 = JsonConvert.DeserializeObject<YDMSG.MsgDispatchCommand>(content);
            //                                eventAggregator.GetEvent<ApproveCommand>().Publish(data2);
            //                                break;
            //                            case ("DSIM.Command.Transmit"):
            //                                var data3 = JsonConvert.DeserializeObject<YDMSG.MsgDispatchCommand>(content);
            //                                eventAggregator.GetEvent<TransmitCommand>().Publish(data3);
            //                                break;
            //                            case ("DSIM.Command.Sign"):
            //                                var data4 = JsonConvert.DeserializeObject<YDMSG.MsgCommandSign>(content);
            //                                eventAggregator.GetEvent<SignCommand>().Publish(data4);
            //                                break;
            //                            case ("DSIM.Command.AgentSign"):
            //                                var data5 = JsonConvert.DeserializeObject<YDMSG.MsgCommandSign>(content);
            //                                eventAggregator.GetEvent<AgentSignCommand>().Publish(data5);
            //                                break;
            //                            case ("DSIM.Command.Check"):
            //                                var data6 = JsonConvert.DeserializeObject<YDMSG.MsgSpeedCommand>(content);
            //                                eventAggregator.GetEvent<CheckSpeedCommand>().Publish(data6);
            //                                break;
            //                            case ("DSIM.Command.SpeedCache"):
            //                                var data7 = JsonConvert.DeserializeObject<YDMSG.MsgSpeedCommand>(content);
            //                                eventAggregator.GetEvent<CacheSpeedCommand>().Publish(data7);
            //                                break;
            //                            case ("DSIM.Command.Active"):
            //                                var data8 = JsonConvert.DeserializeObject<YDMSG.MsgSpeedCommand>(content);
            //                                eventAggregator.GetEvent<ActiveSpeedCommand>().Publish(data8);
            //                                break;
            //                            case ("DSIM.Command.Execute"):
            //                                var data9 = JsonConvert.DeserializeObject<YDMSG.MsgSpeedCommand>(content);
            //                                eventAggregator.GetEvent<ExecuteSpeedCommand>().Publish(data9);
            //                                break;
            //                            default:
            //                                break;
            //                        }
            //                    }
            //                }
            //            });
            //        }
            //    }
            //}
            //catch (Exception except)
            //{
            //    MessageBox.Show(except.Message);
            //}
        }