static void Main(string[] args) { Console.WriteLine("Hello World!"); StudentCommon st = new StudentCommon() { Name = "Resat", LastName = "Duyar", Age = 28 }; //Herhangi bir tipte gönderilebilir where koşullaırına uyan var factory = new ConnectionFactory() { HostName = "localhost" }; using (IConnection connection = factory.CreateConnection()) using (IModel channel = connection.CreateModel()) { channel.QueueDeclare(queue: "StudentSave", //Queue kuyrukta hangi isimde tutulacağı bilgisi operasyon istek zamanı gönderilebilir durable: false, // ile in-memory mi yoksa fiziksel olarak mı saklanacağı belirlenir. exclusive: false, // yalnızca bir bağlantı tarafından kullanılır ve bu bağlantı kapandığında sıra silinir - özel olarak işaretlenirse silinmez autoDelete: false, // en son bir abonelik iptal edildiğinde en az bir müşteriye sahip olan kuyruk silinir arguments: null); // isteğe bağlı; eklentiler tarafından kullanılır ve TTL mesajı, kuyruk uzunluğu sınırı, vb. string message = JsonConvert.SerializeObject(st); var body = Encoding.UTF8.GetBytes(message); channel.BasicPublish(exchange: "", routingKey: "StudentSave", basicProperties: null, body: body); Console.WriteLine($"Gönderilen Öğrenci: {st.Name}-{st.LastName}"); } Console.WriteLine("Öğrenci Gönderildi..."); Console.ReadLine(); //try catch ile veya farklı algoritmalarınızla loglama yapılabilir }
static void Main(string[] args) { Console.WriteLine("Hello World!"); var factory = new ConnectionFactory() { HostName = "localhost" }; using (IConnection connection = factory.CreateConnection()) using (IModel channel = connection.CreateModel()) { channel.QueueDeclare(queue: "StudentSave", //Queue kuyrukta hangi isimde tutulacağı bilgisi operasyon istek zamanı gönderilebilir durable: false, // ile in-memory mi yoksa fiziksel olarak mı saklanacağı belirlenir. exclusive: false, // yalnızca bir bağlantı tarafından kullanılır ve bu bağlantı kapandığında sıra silinir - özel olarak işaretlenirse silinmez autoDelete: false, // en son bir abonelik iptal edildiğinde en az bir müşteriye sahip olan kuyruk silinir arguments: null); // isteğe bağlı; eklentiler tarafından kullanılır ve TTL mesajı, kuyruk uzunluğu sınırı, vb. var consumer = new EventingBasicConsumer(channel); consumer.Received += (model, ea) => { var body = ea.Body; var message = Encoding.UTF8.GetString(body.ToArray()); StudentCommon st = JsonConvert.DeserializeObject <StudentCommon>(message); //Herhangi bir tipte gönderilebilir where koşullaırına uyan Console.WriteLine($" Adı: {st.Name} Soyadı:{st.LastName} Yaş:{st.Age}"); }; channel.BasicConsume(queue: "StudentSave", //Queue kuyrukta hangi isimde tutulacağı bilgisi operasyon istek zamanı gönderilebilir. autoAck: false, /* autoAck: bir mesajı aldıktan sonra bunu anladığına * dair(acknowledgment) kuyruğa bildirimde bulunur ya da timeout gibi vakalar oluştuğunda * mesajı geri çevirmek(Discard) veya yeniden kuyruğa aldırmak(Re-Queue) için dönüşler yapar*/ consumer: consumer); Console.WriteLine(" Kaydınız Yapıldı. Teşekkürler :)"); StudentEvent studentEvent = new StudentEvent() { Result = "Başarılı" }; string message = JsonConvert.SerializeObject(studentEvent); var body = Encoding.UTF8.GetBytes(message); channel.BasicPublish(exchange: "", routingKey: "StudentSaveEvent", basicProperties: null, body: body); Console.ReadLine(); //try catch ile veya farklı algoritmalarınızla loglama yapılabilir } }