Untitled

mail@pastecode.io avatar
unknown
plain_text
a month ago
1.7 kB
4
Indexable
Never
  public async Task StartPublishing()
  {
      var factory = new ConnectionFactory
      {
          Uri = new Uri("amqps://vwsiemxb:S0Ww8DN0EDsYP3kp5iwBD-kl4PFkFUb1@moose.rmq.cloudamqp.com/vwsiemxb")
      };

      var mailList = await _outboxMessageRepository.GetAllAsync(x => !x.IsProcessed);

      if (mailList == null || !mailList.Any())
      {
          Console.WriteLine("Gönderilecek mesaj bulunamadı.");
          return;
      }

      var tasks = new List<Task>();

      foreach (var item in mailList)
      {
          string message = $"{item.Payload}";
          byte[] byteMessage = Encoding.UTF8.GetBytes(message);
          item.IsProcessed = true;
          _outboxMessageRepository.Update(item);


          try
          {
              // Mesajı yayınla ve işlemi bir Task'e ekleyerek listeye ekle
              var task = PublishMessage(factory, item.Type, byteMessage);
              tasks.Add(task);
          }
          catch (Exception ex)
          {
              Console.WriteLine($"Hata: Mesaj gönderilemedi. Hata: {ex.Message}");
              // Hata durumunda gerekli işlemleri yapabilirsiniz.

              // Mesaj gönderilmediği için IsProcessed değerini false olarak ayarla
              //item.IsProcessed = false;
              //_outboxMessageRepository.Update(item);

          }

          await Task.Delay(1000); // 1 saniye bekle

      }



      // Tüm mesajların işlenmesini bekleyin
      await Task.WhenAll(tasks);
      await _unitOfWork.CommitAsync();

      // Tüm mesajlar yayınlandıktan sonra CommitAsync çağırın
  }
Leave a Comment