public Bus(ILogger <Bus> logger, BusOptions options, RabbitMqHelper rabbitMqHelper) { this.subscriptions = new List <BusSubscription>(); this.logger = logger; this.options = options.Validate(); this.rabbit = rabbitMqHelper; }
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); }
/// <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); }
/// <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); }
public IActionResult Index(PersonalInfo personalInfo) { RabbitMqHelper helper = new RabbitMqHelper(_configuration); helper.ConnectionRabbitMq(personalInfo); return(Redirect("/")); }
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)); }
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); }
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)); }
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); }
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")); }
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")); }
//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 { })); } }
//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 { })); } }
//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 { })); } }
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 + "毫秒"; }
// 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) { } }
/// <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) { } }
//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 { })); } }
//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 { })); } }
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(); }
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); }
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); }
/// <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) { } }
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)); }
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); }
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); }
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(); } } }
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."); }); } }