static void Main(string[] args) { //https://www.tutlane.com/tutorial/rabbitmq/csharp-rabbitmq-headers-exchange Console.WriteLine("Airport Information Center - Routing"); ConnectionFactory factory = new ConnectionFactory(); factory.Uri = new Uri("amqp://*****:*****@localhost:5672/"); // Use one connection for the whole program if possible, fewer is better. IConnection conn = factory.CreateConnection(); Console.WriteLine("Connected"); // Channels should be reused when possible. IModel channel = conn.CreateModel(); var properties = channel.CreateBasicProperties(); properties.Persistent = false; Console.WriteLine("Channel open"); var exchangeName = "MyRoutingExchange"; var queueName = "MyRoutingQueue"; var routingKey = "UnusedRoutingKey"; channel.ExchangeDeclare(exchangeName, ExchangeType.Direct); channel.QueueDeclare(queueName, false, false, false, null); channel.QueueBind(queueName, exchangeName, routingKey, null); var companies = new[] { "SAS", "SWA", "KLM" }; var random = new Random(); while (true) { foreach (var company in companies) { var gateUpdate = new GateUpdate() { FlightNr = company + random.Next(1000, 9999), Gate = random.Next(1, 50).ToString() }; Dictionary <string, object> dictionary = new Dictionary <string, object>(); dictionary.Add("MyRoutingKey", company); properties.Headers = dictionary; byte[] messageBodyBytes = System.Text.Encoding.UTF8.GetBytes(JsonSerializer.Serialize(gateUpdate)); channel.BasicPublish(exchangeName, routingKey, properties, messageBodyBytes); Console.WriteLine(gateUpdate.ToString()); Thread.Sleep(500); } } }
static void Main(string[] args) { //https://www.tutlane.com/tutorial/rabbitmq/csharp-rabbitmq-direct-exchange Console.WriteLine("Airport Information Center"); ConnectionFactory factory = new ConnectionFactory(); factory.Uri = new Uri("amqp://*****:*****@localhost:5672/"); // Use one connection for the whole program if possible, fewer is better. IConnection conn = factory.CreateConnection(); Console.WriteLine("Connected"); // Channels should be reused when possible. IModel channel = conn.CreateModel(); Console.WriteLine("Channel open"); var exchangeName = "MyFirstExchange"; var routingKeys = new[] { "SAS", "SWA", "KLM" }; channel.ExchangeDeclare(exchangeName, ExchangeType.Direct); foreach (var key in routingKeys) { var queueName = key + "queue"; channel.QueueDeclare(queueName, false, false, false, null); channel.QueueBind(queueName, exchangeName, key, null); } var random = new Random(); while (true) { foreach (var routingKey in routingKeys) { var gateUpdate = new GateUpdate() { FlightNr = routingKey + random.Next(1000, 9999), Gate = random.Next(1, 50).ToString() }; byte[] messageBodyBytes = System.Text.Encoding.UTF8.GetBytes(JsonSerializer.Serialize(gateUpdate)); channel.BasicPublish(exchangeName, routingKey, null, messageBodyBytes); Console.WriteLine(gateUpdate.ToString()); Thread.Sleep(500); } } }