Пример #1
0
 public Bus(ILogger <Bus> logger, BusOptions options, RabbitMqHelper rabbitMqHelper)
 {
     this.subscriptions = new List <BusSubscription>();
     this.logger        = logger;
     this.options       = options.Validate();
     this.rabbit        = rabbitMqHelper;
 }
Пример #2
0
        private static BrokerOptions GetBrokerOptions(IConfiguration configuration, ILogger logger = null)
        {
            var output = configuration.GetSection("BrokerOptions").Get <BrokerOptions>();

            output.Address = EnviromentHelper.GetSetting("BROKER_ADDRESS", output.Address);
            logger?.LogInformation($"[SETTINGS]: BROKER_ADDRESS (Message Broker Address) - {output.Address}");

            output.UserName = EnviromentHelper.GetSetting("BROKER_USERNAME", output.UserName, allowEmpty: true);
            if (!string.IsNullOrEmpty(output.UserName))
            {
                logger?.LogInformation($"[SETTINGS]: BROKER_USERNAME - '{output.UserName}'");
            }

            output.Password = EnviromentHelper.GetSetting("BROKER_PASSWORD", output.Password, allowEmpty: true);
            if (!string.IsNullOrEmpty(output.Password))
            {
                logger?.LogInformation($"[SETTINGS]: BROKER_PASSWORD - '{output.Password}'");
            }

            if (!RabbitMqHelper.TryConnect(output.Address, output.UserName, output.Password, out Exception ex))
            {
                throw new ApplicationException($"Unable to connect to Broker: {output.Address}, username: {output.UserName}, password: {output.Password} ({ex.Message})");
            }

            return(output);
        }
Пример #3
0
 /// <summary>
 /// 获取推送消息
 /// </summary>
 /// <param name="type">消息类型(2-商品价格变更 3-库存变化 4-商品上下架变更)</param>
 /// <returns></returns>
 public static List <JdPriceMessageDto> GetMessage(string type)
 {
     try
     {
         string token    = JdHelper.GetToken();
         string postData = "token=" + token + "&type=" + type;
         string jsonstr  = WebRequestHelper.SendPostInfo(UrlBase + "message/get", postData);
         //发送数据到mq
         var json = SerializationHelper.JsonSerialize(new { MsgType = type, Request = postData, Response = jsonstr });
         RabbitMqHelper.Send(RabbitMqRoutingKey.JdCommodityMsgReceived, RabbitMqExchange.Commodity, json);
         var resullt = Newtonsoft.Json.JsonConvert.DeserializeObject <JdResultDto <List <JdPriceMessageDto> > >(jsonstr);
         if (resullt.Success)
         {
             return(resullt.Result);
         }
         else
         {
             LogHelper.Error("JDSV.GetMessage 获取推送消息 失败,Request: " + postData + ",Response: " + resullt.ResultCode + "-" + resullt.ResultMessage);
         }
     }
     catch (Exception ex)
     {
         LogHelper.Error("JDSV.GetMessage 获取推送消息 异常", ex);
     }
     return(null);
 }
Пример #4
0
        /// <summary>
        /// get aero player
        /// </summary>
        /// <param name="player"></param>
        /// <returns></returns>
        public string Get_Aero_Player(string player)
        {
            List <UserAero> T_list = new List <UserAero>();

            try
            {
                JObject     ob    = DaiWanAPI.AllMethod.GetUserAeroByCname(GetToken(), DaiWanAPI.Globals.SetPlayerName(player));
                RedisHelper redis = new RedisHelper();
                if (ob["retCode"].ToString() == "0")
                {
                    T_list = JsonConvert.DeserializeObject <List <UserAero> >(ob["data"].ToString());
                    for (int i = 0; i < T_list.Count; i++)
                    {
                        T_list[i].area_name = redis.StringGet($"aero_id_name:{T_list[i].area_id}");
                        T_list[i].tierqueue = redis.StringGet($"tier_queue:{T_list[i].tier}{T_list[i].queue}");
                    }
                }
                return(JsonConvert.SerializeObject(T_list));
            }
            catch (Exception ex)
            {
                RabbitMqHelper.K_log(ex, player, "Get_Aero_Player", "C_Error");
                return(string.Empty);
            }
        }
        public RabbitMqManage()
        {
            var           config = ConfigurationManage.GetConfiguration($"configuration:{Id}");
            Configuration cg     = null;

            if (config == null)
            {
                IList <ConfigurationModel> configurations = new List <ConfigurationModel>();
                var configuration = new ConfigurationModel
                {
                    Runtime     = Environment.GetEnvironmentVariable("Runtime"),
                    Description = "rabbitmq",
                    Content     = new Configuration
                    {
                        ConnectString = "amqp://192.168.137.2:5672/",
                        User          = "******",
                        Password      = "******"
                    }.SerializeJson(),
                };
                configurations.Add(configuration);
                ConfigurationManage.SetConfiguration($"configuration:{Id}", configurations);
                cg = configuration.Content.DeserializeJson <Configuration>();
            }
            else
            {
                cg = config.DeserializeJson <Configuration>();
            }
            var rabbitMqHelper = new RabbitMqHelper(cg.ConnectString, cg.User, cg.Password, cg.Vhost);

            SingletonUtility.AddSingleton(rabbitMqHelper);
        }
Пример #6
0
        public IActionResult Index(PersonalInfo personalInfo)
        {
            RabbitMqHelper helper = new RabbitMqHelper(_configuration);

            helper.ConnectionRabbitMq(personalInfo);

            return(Redirect("/"));
        }
Пример #7
0
        public void Should_requeue_message_on_no_ack()
        {
            RabbitMqHelper.SendMessage("sample message", _queueName);

            RabbitMqHelper.GetMessageAndNack(_queueName, false);

            var messageCount = RabbitMqHelper.GetMessageCountInAQueue(_queueName);

            Assert.That(messageCount, Is.EqualTo(1));
        }
Пример #8
0
        protected bool PushJsonToRabbitMq(JObject jobj, string exchangeName, string routeName, Logger logger, out string errorMsg)
        {
            errorMsg = string.Empty;

            bool pushSucc = true;

            pushSucc = RabbitMqHelper.PushJsonToRabbitMq(jobj, exchangeName, routeName, logger, out errorMsg);

            return(pushSucc);
        }
Пример #9
0
        public void Should_requeue_to_another_dead_letter_queue()
        {
            ConfigureMessaging(_deadLetterQueueName);

            RabbitMqHelper.SendMessage("sample message", _queueName);
            RabbitMqHelper.GetMessageAndNack(_queueName, false);
            var messageCount = RabbitMqHelper.GetMessageCountInAQueue(_deadLetterQueueName);

            Assert.That(messageCount, Is.EqualTo(1));
        }
Пример #10
0
        private static void ConfigureMessaging(string deadLetterQueueName)
        {
            RabbitMqHelper.DeleteQueue(_queueName);
            RabbitMqHelper.DeleteQueue(_deadLetterQueueName);

            RabbitMqHelper.DeclareQueue(_queueName, new Dictionary <string, object>
            {
                { "x-dead-letter-exchange", deadLetterQueueName }
            });
            RabbitMqHelper.DeclareQueue(_deadLetterQueueName);
        }
Пример #11
0
        public void Should_requeue_at_the_same_place()
        {
            RabbitMqHelper.SendMessage("1", _queueName);
            RabbitMqHelper.SendMessage("2", _queueName);

            var firstMessage  = RabbitMqHelper.GetMessageAndNack(_queueName, true);
            var secondMessage = RabbitMqHelper.GetMessageAndNack(_queueName, true);

            Assert.That(firstMessage, Is.EqualTo("1"));
            Assert.That(secondMessage, Is.EqualTo("1"));
        }
Пример #12
0
        public void Should_dead_letter_at_the_end_of_queue()
        {
            RabbitMqHelper.SendMessage("1", _queueName);
            RabbitMqHelper.SendMessage("2", _queueName);

            var firstMessage  = RabbitMqHelper.GetMessageAndNack(_queueName, false);
            var secondMessage = RabbitMqHelper.GetMessageAndNack(_queueName, false);

            Assert.That(firstMessage, Is.EqualTo("1"));
            Assert.That(secondMessage, Is.EqualTo("2"));
        }
Пример #13
0
 //GET:FREE_HERO
 public JsonResult Get_Free_Hero()
 {
     try
     {
         var redis = new RedisHelper();
         return(Json(redis.StringGet("free_new_skin:result")));
     }
     catch (Exception ex)
     {
         RabbitMqHelper.K_log(ex, "free_new_skin:result", "Get_Free_Hero", "C_Error");
         return(Json(new { }));
     }
 }
Пример #14
0
 //GET:Champion_Trend
 public JsonResult Get_Champion_Trend(string TierQueue)
 {
     try
     {
         var redis = new RedisHelper();
         return(Json(redis.StringGet($"tierpox:{TierQueue}")));
     }
     catch (Exception ex)
     {
         RabbitMqHelper.K_log(ex, TierQueue, "Get_Champion_Trend", "C_Error");
         return(Json(new { }));
     }
 }
Пример #15
0
 //GET:Aero_num
 public JsonResult Get_Aero_Num()
 {
     try
     {
         var redis = new RedisHelper();
         return(Json(redis.StringGet("aeronum:num")));
     }
     catch (Exception ex)
     {
         RabbitMqHelper.K_log(ex, "aeronum:num", "Get_Aero_Num", "C_Error");
         return(Json(new { }));
     }
 }
Пример #16
0
        protected void btnAdd_Click(object sender, EventArgs e)
        {
            int      count   = Convert.ToInt32(txtCount.Text);
            DateTime dtBegin = DateTime.Now;

            //for(int i=0;i<count;i++)
            //{
            RabbitMqHelper.Add("", "test", "0", false);
            //}
            double total = (DateTime.Now - dtBegin).TotalMilliseconds;

            txtResult.Text = "操作成功,共计用时" + total + "毫秒";
        }
Пример #17
0
        // GET: Globals

        //
        public void UpdataWebsite(string broType)
        {
            try
            {
                website_info data = new website_info()
                {
                    Type = broType
                };
                string Json_str = RabbitMqHelper.Object_to_Json <website_info>(OperationType.Operation.update_web_site, data);
                RabbitMqHelper.SendMessageToQueue(OperationType.Mq_queue_name, Json_str);
            }
            catch (Exception) { }
        }
Пример #18
0
 /// <summary>
 /// 更新API调用量
 /// </summary>
 public static void Update_website_api()
 {
     try
     {
         website_info data = new website_info()
         {
             Type = OperationType.Operation.api.ToString()
         };
         string json_str = RabbitMqHelper.Object_to_Json <website_info>(OperationType.Operation.api, data);
         RabbitMqHelper.SendMessageToQueue(OperationType.Mq_queue_name, json_str);
     }
     catch (Exception) { }
 }
Пример #19
0
 //GET:HERO_INFO
 public JsonResult Get_Hero_Info(string Hero_Ename)
 {
     try
     {
         var redis = new RedisHelper();
         return(Json(redis.StringGet($"heroinfo:{Hero_Ename.ToLower()}")));
     }
     catch (Exception ex)
     {
         RabbitMqHelper.K_log(ex, Hero_Ename, "Get_Hero_Info", "C_Error");
         return(Json(new { }));
     }
 }
Пример #20
0
 //GET:HERO_LIST
 public JsonResult Get_Hero_List(string Hero_type)
 {
     try
     {
         var redis = new RedisHelper();
         return(Json(redis.StringGet($"hero_list:{Hero_type}")));
     }
     catch (Exception ex)
     {
         RabbitMqHelper.K_log(ex, Hero_type, "Get_Hero_List", "C_Error");
         return(Json(new { }));
     }
 }
Пример #21
0
        static void Main(string[] args)
        {
            #region RabbitMq
            using (var rabbitMq = new RabbitMqHelper(new MqConfig()))
            {
                rabbitMq.Subscribe <string>("exchange11", "queue11", $"exchange11__queue11",
                                            (message, para) => { Console.WriteLine(message); return(true); },
                                            (msg, retry, ex) => Console.WriteLine(ex));

                Parallel.For(0, 10, x =>
                {
                    for (int i = 0; i < 100; i++)
                    {
                        rabbitMq.Publish("exchange11", "queue11", $"exchange11__queue11", $"{x + 1}__test{i + 1}");
                    }
                });

                Thread.Sleep(10000);
            }

            #endregion

            #region Redis
            var redis = new RedisHelper(new RedisConfiguration {
                PoolSize = 10, ConnectionString = "127.0.0.1:6379,password=123"
            });
            Console.WriteLine(redis.RedisConnectionPoolManager.GetConnectionInformations().ToJson());
            //redis.StringSet("test", "111");

            var caches = new string[1000];
            Parallel.For(0, 1000, (i, state) =>
            {
                try
                {
                    var helper = new RedisHelper(new RedisConfiguration {
                        PoolSize = 10, ConnectionString = "127.0.0.1:6379,password=123"
                    });
                    caches[i] = helper.StringGet("test");
                    //Console.WriteLine($"{i + 1}: {caches[i]}");
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            });

            Console.WriteLine($"测试完成,数量:{caches.Count(x => x != null)}");
            #endregion

            Console.ReadLine();
        }
Пример #22
0
        public void Send()
        {
            RabbitMqConfig.RabbitMqSetting = new RabbitMqSetting();
            RabbitMqConfig.RabbitMqSetting.RabbitMqConnection = "amqp://*****:*****@192.168.0.144:5672";
            RabbitMqManager.Register();

            string        businessName = "test_mq";
            List <string> mqTests      = new List <string>();

            mqTests.Add("测试11");
            mqTests.Add("测试21");
            mqTests.Add("测试31");
            RabbitMqHelper.Send(businessName, mqTests);
        }
Пример #23
0
        public void Send()
        {
            RabbitMqConfig.RabbitMqSetting = new RabbitMqSetting();
            RabbitMqConfig.RabbitMqSetting.RabbitMqConnection = "amqp://*****:*****@192.168.0.144:5672";
            RabbitMqManager.Register();

            string        businessName = "test_mq";
            List <string> mqTests      = new List <string>();

            mqTests.Add("测试1");
            mqTests.Add("测试2");
            mqTests.Add("测试3");
            RabbitMqHelper.Send(businessName, mqTests);
        }
Пример #24
0
 /// <summary>
 /// Log 日志
 /// </summary>
 /// <param name="ex"></param>
 /// <param name="API_Url"></param>
 public static void K_log(Exception ex, string API_Url)
 {
     try
     {
         web_log log = new web_log()
         {
             Log     = $"{ex.Message} / {API_Url}",
             LogTime = DateTime.Now,
             LogFrom = "CallRemoteAPI",
             LogType = "Api_Error"
         };
         string json_str = RabbitMqHelper.Object_to_Json <web_log>(OperationType.Operation.log, log);
         RabbitMqHelper.SendMessageToQueue(OperationType.Mq_queue_name, json_str);
     }
     catch (Exception) { }
 }
Пример #25
0
        public async void Should_not_ack_message_when_exception_is_thrown_while_processing_message()
        {
            RabbitMqHelper.DeleteQueue(_queueName);

            ConfigureMessaging();

            await Task.Delay(TimeSpan.FromSeconds(1));

            SendSampleMessage();

            await Task.Delay(TimeSpan.FromSeconds(0.5));

            var messageCount = RabbitMqHelper.GetMessageCountInAQueue(_queueName);

            Assert.That(messageCount, Is.EqualTo(1));
        }
Пример #26
0
        public static void GetMessage()
        {
            string businessName = "test_mq";
            //var r=RabbitMqHelper.GetMessage(businessName, true);
            //var r1 = RabbitMqHelper.GetMessage(businessName, true);

            //var r2 = RabbitMqHelper.GetMessage(businessName, false);
            //RabbitMqHelper.Received(businessName, CallBackFunc, "direct", CallBackErrorFunc);

            var r3 = RabbitMqHelper.GetMessage(businessName, false, (c, m) =>
            {
                var aa = m;
                c.BasicAck(m.DeliveryTag, false);
            });

            Console.WriteLine(r3.Message);
        }
Пример #27
0
        private static BrokerOptions BuildBrokerOptions(IConfiguration config)
        {
            // Get.
            var options = config.GetSection("BrokerOptions").Get <BrokerOptions>();

            options.Address  = EnviromentHelper.GetSetting("BROKER_ADDRESS", options.Address);
            options.UserName = EnviromentHelper.GetSetting("BROKER_USERNAME", options.UserName, allowEmpty: true);
            options.Password = EnviromentHelper.GetSetting("BROKER_PASSWORD", options.Password, allowEmpty: true);

            // Validate.
            if (!RabbitMqHelper.TryConnect(options.Address, options.UserName, options.Password, out Exception ex))
            {
                throw new ApplicationException($"Could not connect to RabbitMq Server on the hostname: {options.Address}, username: {options.UserName}, password: {options.Password} ({ex.Message})");
            }

            return(options);
        }
Пример #28
0
        private static void timerGetPersistMachineInformation(object sender, ElapsedEventArgs e)
        {
            bool teste = true;

            if (teste)
            {
                try
                {
                    _timerGetPersistMachineInformation.Stop();
                    var listaMachineInformation = RabbitMqHelper.GetAllQueues();
                    if (listaMachineInformation != null && listaMachineInformation.Count > 0)
                    {
                        AddMachineInformation(listaMachineInformation);
                    }
                }
                finally
                {
                    _timerGetPersistMachineInformation.Start();
                }
            }
        }
Пример #29
0
        public void GetMessage()
        {
            RabbitMqConfig.RabbitMqSetting = new RabbitMqSetting();
            RabbitMqConfig.RabbitMqSetting.RabbitMqConnection = "amqp://*****:*****@192.168.0.144:5672";
            RabbitMqManager.Register();

            string businessName = "test_mq";

            //var r=RabbitMqHelper.GetMessage(businessName, true);
            //var r1 = RabbitMqHelper.GetMessage(businessName, true);

            //var r2 = RabbitMqHelper.GetMessage(businessName, false);
            RabbitMqHelper.Received(businessName, fun, "direct", (string e) =>
            {
                var cc = e;
            });


            //var r3 = RabbitMqHelper.GetMessage(businessName, false);

            //RabbitMqHelper.BasicAck(r3.DeliveryTag,true);
            Thread.Sleep(6000);
        }
        public void Publish(object file, string hostName, string username, string password, int retryCount, string queueName)
        {
            lock (_syncroot)
            {
                _logger.LogInformation("RabbitMQ is trying to connect.");

                var policy = PolicyHelper.CreateRabbitMqPolicy(_logger, retryCount);

                policy.Execute(() =>
                {
                    var factory = RabbitMqHelper.CreateConnectionFactory(hostName, username, password);

                    using var connection = factory.CreateConnection();

                    using var channel = connection.CreateModel();

                    channel.QueueDeclare(queue: queueName,
                                         durable: false,
                                         exclusive: false,
                                         autoDelete: false,
                                         arguments: null);

                    var body = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(file));

                    var properties = channel.CreateBasicProperties();

                    properties.Persistent = true;

                    channel.BasicPublish(""
                                         , queueName
                                         , properties
                                         , body);

                    _logger.LogInformation("RabbitMQ client is ready do publish messages.");
                });
            }
        }