public async Task <ReportEvent> GetReport() { var allContact = await contactContext.ContactInfo.Find(x => true).ToListAsync(); var filteredData = allContact.Where(b => b.IletisimTipi == Entities.Enums.IletisimTipi.Konum).Select(c => new ReportData { Konum = c.Aciklama, KonumdakiToplamTelefonNo = allContact.Where(x => x.IletisimTipi == Entities.Enums.IletisimTipi.TelefonNumarasi && x.PersonId == c.PersonId).Count() }); var res = filteredData.GroupBy(x => x.Konum).Select(y => new ReportData { Konum = y.Key, KonumdakiToplamKayit = y.Count(), KonumdakiToplamTelefonNo = y.Sum(v => v.KonumdakiToplamTelefonNo) }).ToList(); var model = new ReportEvent() { Durum = RaporDurumConvert.RaporDurumEnum(2), ReportId = Guid.NewGuid(), RaporIcerigi = res }; try { reportProducer.PubishReport(EventConstants.ReportQueue, model); } catch (Exception) { throw; } return(model); }
public void PubishReport(string queName, ReportEvent model) { model.Durum = RaporDurumConvert.RaporDurumEnum(1); Thread.Sleep(2000); using (var channel = connection.CreateModel()) { channel.QueueDeclare(queue: queName, durable: false, exclusive: false, autoDelete: false, arguments: null); model.Durum = RaporDurumConvert.RaporDurumEnum(2); var message = JsonConvert.SerializeObject(model); var body = Encoding.UTF8.GetBytes(message); IBasicProperties bprops = channel.CreateBasicProperties(); bprops.Persistent = true; bprops.DeliveryMode = 2; channel.ConfirmSelect(); channel.BasicPublish(exchange: "", routingKey: queName, mandatory: true, basicProperties: bprops, body: body); channel.WaitForConfirmsOrDie(); channel.BasicAcks += (sender, eventArgs) => { Console.WriteLine("RabbitMQ"); }; channel.ConfirmSelect(); } }