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
             });
         }
     }
 }
Пример #2
0
 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
     });
 }
Пример #7
0
 public IActionResult Post([FromBody] MessagesConfig msg)
 {
     Task.Run(() => _messageService.SendMessagesAsync(msg));
     return(Ok());
 }