public MailConsumer(IConfigurationRoot configuration) { _rabbitMQService = new RabbitMQConnection(); _queueName = configuration.GetSection("RabbitMQ").GetSection("Queue").Value; using (var connection = _rabbitMQService.GetRabbitMQConnection(configuration)) { using (var channel = connection.CreateModel()) { var consumer = new EventingBasicConsumer(channel); // Received event'i sürekli listen modunda olacaktır. consumer.Received += (model, ea) => { var body = ea.Body; var message = Encoding.UTF8.GetString(body); var mailParam = JsonConvert.DeserializeObject <MailInput>(message); var sender = new MailSender(); sender.MailSend(mailParam); Console.WriteLine("{0} isimli queue üzerinden gelen mesaj: \"{1}\"", _queueName, message); }; channel.BasicConsume(_queueName, true, consumer); Console.ReadLine(); } } }
public override void Producer(T model, string QueueRouteKey) { string mongodbMessage = ""; try { var rabbitMQConnectionService = new RabbitMQConnection(); using (var connection = rabbitMQConnectionService.GetRabbitMQConnection()) { using (var channel = connection.CreateModel()) { string message = JsonConvert.SerializeObject(model); mongodbMessage = "Model : " + model.GetType().Name + " # Data : " + message + " # "; var publicationAddress = new PublicationAddress(ExchangeType.Topic, RabbitMQModel.Exchangename, QueueRouteKey); byte[] body = Encoding.UTF8.GetBytes(message); channel.BasicPublish(publicationAddress, null, body); mongodbMessage += QueueRouteKey + " 'e EKLENDİ"; channel.Close(); } connection.Close(); } } catch (Exception ex) { mongodbMessage += " # ERROR : " + ex; } }
static void Main(string[] args) { RabbitMQExtraQueueProcess QueueExtraProcess = RabbitMQExtraQueueProcess.createAsSingleton(); Console.WriteLine("Sms Consumer"); var rabbitMQService = new RabbitMQConnection(); string mongodbMessage = ""; using (var connection = rabbitMQService.GetRabbitMQConnection()) { using (var channel = connection.CreateModel()) { channel.BasicQos(0, 1, false); var consumer = new EventingBasicConsumer(channel); consumer.Received += (model, ea) => { try { string message = Encoding.UTF8.GetString(ea.Body); SmsModel smsModel = JsonConvert.DeserializeObject <SmsModel>(message); string phones = ListofString(smsModel.Phones); mongodbMessage = "Phones : " + phones; string responseResult = ""; SmsProcess smsProcess = SmsProcess.createAsSingleton(); responseResult = smsProcess.SmsSend(smsModel); channel.BasicAck(ea.DeliveryTag, false); mongodbMessage += " Sms Api Result : " + responseResult + " - Sms Gönderildi ve Queue'den kaldırıldı."; } catch (Exception ex) //Email Consumer ile aynı yol izleniyor. { currentRetryCount = QueueExtraProcess.GetRetryAttempts(ea.BasicProperties); mongodbMessage += " - RetryCount : " + currentRetryCount + " - Hata : " + ex.ToString(); if (currentRetryCount < RabbitMQModel.RetryCount) { currentRetryCount++; var properties = channel.CreateBasicProperties(); properties.Headers = QueueExtraProcess.CopyMessageHeaders(ea.BasicProperties.Headers); QueueExtraProcess.SetRetryAttempts(properties, currentRetryCount); channel.BasicPublish(ea.Exchange, ea.RoutingKey, properties, ea.Body); channel.BasicAck(ea.DeliveryTag, false); } else { channel.BasicReject(ea.DeliveryTag, false); mongodbMessage += currentRetryCount + " - Email Queue' den silindi"; } } }; channel.BasicConsume("SmsQueue", false, consumer); Console.ReadLine(); } } }
static void Main(string[] args) { RabbitMQExtraQueueProcess QueueExtraProcess = RabbitMQExtraQueueProcess.createAsSingleton(); Console.WriteLine("Mail Consumer"); var rabbitMQService = new RabbitMQConnection(); string mongodbMessage = ""; using (var connection = rabbitMQService.GetRabbitMQConnection()) { using (var channel = connection.CreateModel()) { channel.BasicQos(0, 1, false); var consumer = new EventingBasicConsumer(channel); consumer.Received += (model, ea) => { mongodbMessage = ""; EmailModel emailModel = new EmailModel(); try { string message = Encoding.UTF8.GetString(ea.Body); emailModel = JsonConvert.DeserializeObject <EmailModel>(message); string responseResult = ""; MailProcess mailProcess = MailProcess.createAsSingleton(); responseResult = mailProcess.MailSend(emailModel); channel.BasicAck(ea.DeliveryTag, false); mongodbMessage += " Mail Api Result : " + responseResult + " - Mail Gönderildi ve Queue'den kaldırıldı."; } catch (Exception ex) { currentRetryCount = QueueExtraProcess.GetRetryAttempts(ea.BasicProperties); mongodbMessage += " - RetryCount : " + currentRetryCount + " - Hata : " + ex.ToString(); if (currentRetryCount < RabbitMQModel.RetryCount) { currentRetryCount++; var properties = channel.CreateBasicProperties(); properties.Headers = QueueExtraProcess.CopyMessageHeaders(ea.BasicProperties.Headers); QueueExtraProcess.SetRetryAttempts(properties, currentRetryCount); channel.BasicPublish(ea.Exchange, ea.RoutingKey, properties, ea.Body); channel.BasicAck(ea.DeliveryTag, false); } else { channel.BasicReject(ea.DeliveryTag, false); mongodbMessage += currentRetryCount + " - Email Queue' den silindi"; } } Console.WriteLine(mongodbMessage); AppModel modelMongo = new AppModel { Name = emailModel.Subject, Description = mongodbMessage, Date = DateTime.Now }; mongoDbService.Create(modelMongo); }; channel.BasicConsume("EmailQueue", false, consumer); Console.ReadLine(); } } }