/// <summary> /// CookedRabbit RabbitTopologyService constructor. Allows for the sharing of a channel pool and connection pool. /// </summary> /// <param name="rabbitSeasoning"></param> /// <param name="rchanp"></param> /// <param name="rconp"></param> /// <param name="logger"></param> public RabbitMaintenanceService(RabbitSeasoning rabbitSeasoning, IRabbitChannelPool rchanp, IRabbitConnectionPool rconp, ILogger logger = null) : base(rabbitSeasoning, rchanp, rconp, logger) { Guard.AgainstNull(rabbitSeasoning, nameof(rabbitSeasoning)); Guard.AgainstNull(rchanp, nameof(rchanp)); Guard.AgainstNull(rconp, nameof(rconp)); _logger = logger; _seasoning = rabbitSeasoning; rchanp.SetConnectionPoolAsync(rabbitSeasoning, rconp).GetAwaiter().GetResult(); _rcp = rchanp; if (_seasoning.MaintenanceSettings.EnablePingPong) { _pingPong = PingPongAsync($"{_seasoning.MaintenanceSettings.PingPongQueueName}.{RandomString(5, 10)}", _cancellationTokenSource.Token); } if (_seasoning.MaintenanceSettings.ApiSettings.RabbitApiAccessEnabled) { var credentials = new NetworkCredential( _seasoning.MaintenanceSettings.ApiSettings.RabbitApiUserName, _seasoning.MaintenanceSettings.ApiSettings.RabbitApiUserPassword); _httpClient = CreateHttpClient(credentials, TimeSpan.FromSeconds(_seasoning.MaintenanceSettings.ApiSettings.RabbitApiTimeout)); } }
public static async Task ReceiveMessagesForeverAsync(IRabbitConnectionPool rcp) { ResetThreadName(Thread.CurrentThread, "Transient ReceiveMessagesForever Thread"); while (true) { var chan1 = rcp.GetConnection().CreateModel(); var chan2 = rcp.GetConnection().CreateModel(); var chan3 = rcp.GetConnection().CreateModel(); if (chan1.MessageCount(queueName) > 0) { var task1 = ReceiveMessageAsync(chan1); var task2 = ReceiveMessageAsync(chan2); var task3 = ReceiveMessageAsync(chan3); await Task.WhenAll(new Task[] { task1, task2, task3 }); } chan1.Close(200, happyShutdown); chan1.Dispose(); chan2.Close(200, happyShutdown); chan2.Dispose(); chan3.Close(200, happyShutdown); chan3.Dispose(); } }
public static async Task SendMessagesForeverAsync(IRabbitConnectionPool rcp) { ResetThreadName(Thread.CurrentThread, "Transient SendMessagesForever Thread"); int counter = 0; while (true) { var chan1 = rcp.GetConnection().CreateModel(); var chan2 = rcp.GetConnection().CreateModel(); var chan3 = rcp.GetConnection().CreateModel(); var task1 = SendMessageAsync(chan1, counter++); var task2 = SendMessageAsync(chan2, counter++); var task3 = SendMessageAsync(chan3, counter++); await Task.WhenAll(new Task[] { task1, task2, task3 }); chan1.Close(200, happyShutdown); chan1.Dispose(); chan2.Close(200, happyShutdown); chan2.Dispose(); chan3.Close(200, happyShutdown); chan3.Dispose(); } }
/// <summary> /// CookedRabbit RabbitSerializeService constructor. Allows for the sharing of a channel pool and connection pool. /// </summary> /// <param name="rabbitSeasoning"></param> /// <param name="rchanp"></param> /// <param name="rconp"></param> /// <param name="logger"></param> public RabbitSerializeService(RabbitSeasoning rabbitSeasoning, IRabbitChannelPool rchanp, IRabbitConnectionPool rconp, ILogger logger = null) : base(rabbitSeasoning, rchanp, rconp, logger) { Guard.AgainstNull(rabbitSeasoning, nameof(rabbitSeasoning)); Guard.AgainstNull(rchanp, nameof(rchanp)); Guard.AgainstNull(rconp, nameof(rconp)); _logger = logger; _seasoning = rabbitSeasoning; rchanp.SetConnectionPoolAsync(rabbitSeasoning, rconp).GetAwaiter().GetResult(); _rcp = rchanp; }
/// <summary> /// CookedRabbit RabbitTopologyService constructor. Allows for the sharing of a channel pool and connection pool. /// </summary> /// <param name="rabbitSeasoning"></param> /// <param name="rchanp"></param> /// <param name="rconp"></param> /// <param name="logger"></param> public RabbitTopologyService(RabbitSeasoning rabbitSeasoning, IRabbitChannelPool rchanp, IRabbitConnectionPool rconp, ILogger logger = null) { _logger = logger; _seasoning = rabbitSeasoning; rchanp.SetConnectionPoolAsync(rabbitSeasoning, rconp).GetAwaiter().GetResult(); _rcp = rchanp; }
/// <summary> /// CookedRabbit RabbitBurrow constructor. /// </summary> /// <param name="rabbitSeasoning"></param> /// <param name="rchanp"></param> /// <param name="rconp"></param> /// <param name="logger"></param> public RabbitBurrow(RabbitSeasoning rabbitSeasoning, IRabbitChannelPool rchanp, IRabbitConnectionPool rconp, ILogger logger = null) { _seasoning = rabbitSeasoning; Transmission = new RabbitSerializeService(_seasoning, rchanp, rconp, logger); Maintenance = new RabbitMaintenanceService(_seasoning, rchanp, rconp, logger); }