private async Task SendToKafkaTopic(MessagesConfig msg, IEnumerable <string> messages) { if (msg.UseParallelism) { Parallel.ForEach(messages, parallelOptions: GetParallellismConfigs(msg), async x => { await _producer.ProduceAsync( topicName, new Message <Null, string> { Value = x }); } ); } else { foreach (var message in messages) { await _producer.ProduceAsync( topicName, new Message <Null, string> { Value = message }); } } }
public ContactUsController(IMessageManager msg, IUserManager userManager, IStringLocalizer<SharedResource> localizer, IHttpContextAccessor ctx, IEmailSender emailSender, IOptions<MessagesConfig> msgConfig) : base(ctx, userManager) { _msg = msg; _emailSender = emailSender; _messagesConfig = msgConfig.Value; _localizer = localizer; ViewBag.successMessage = null; ViewBag.ErrInfo = null; setCurrentCulture(); }
private IEnumerable <string> CreateMessages(MessagesConfig msg) { var text = new List <string>(); for (var i = 0; i < msg.MessagesCount; i++) { text.Add(CreateMsg(msg.MessageSize, i)); } return(text); }
public async Task SendMessagesAsync(MessagesConfig msg) { var messages = CreateMessages(msg); if (msg.QueueType == QueueType.RabbitMQ) { await SendToRabbitQueue(msg, messages); } else { await SendToKafkaTopic(msg, messages); } }
private async Task SendToRabbitQueue(MessagesConfig msg, IEnumerable <string> messages) { if (msg.UseParallelism) { Parallel.ForEach(messages, parallelOptions: GetParallellismConfigs(msg), async x => { await _bus.SendReceive.SendAsync(queueName, x); } ); } else { foreach (var message in messages) { await _bus.SendReceive.SendAsync(queueName, message); } } }
private static ParallelOptions GetParallellismConfigs(MessagesConfig msg) { return(new ParallelOptions { MaxDegreeOfParallelism = msg.ParallelismLimit ?? 2 }); }
public IActionResult Post([FromBody] MessagesConfig msg) { Task.Run(() => _messageService.SendMessagesAsync(msg)); return(Ok()); }