C# 消息队列:使用 RabbitMQ 发送和接收消息
以下是一个使用 C# 编写的简单的消息队列发送和接收程序的示例,它使用 RabbitMQ 来实现消息队列的发送和接收:\n\ncsharp\nusing System;\nusing System.Threading.Tasks;\nusing RabbitMQ.Client;\nusing RabbitMQ.Client.Events;\n\nclass Program\n{\n static void Main()\n {\n Task.Run(() => ReceiveMessage()); // 启动接收消息的任务\n SendMessage(); // 发送消息\n }\n\n static void SendMessage()\n {\n var factory = new ConnectionFactory() { HostName = "localhost" };\n using (var connection = factory.CreateConnection())\n using (var channel = connection.CreateModel())\n {\n channel.QueueDeclare(queue: "message_queue",\n durable: false,\n exclusive: false,\n autoDelete: false,\n arguments: null);\n\n string message = "Hello, RabbitMQ!";\n var body = System.Text.Encoding.UTF8.GetBytes(message);\n\n channel.BasicPublish(exchange: "",\n routingKey: "message_queue",\n basicProperties: null,\n body: body);\n\n Console.WriteLine("Sent message: {0}", message);\n }\n }\n\n static void ReceiveMessage()\n {\n var factory = new ConnectionFactory() { HostName = "localhost" };\n using (var connection = factory.CreateConnection())\n using (var channel = connection.CreateModel())\n {\n channel.QueueDeclare(queue: "message_queue",\n durable: false,\n exclusive: false,\n autoDelete: false,\n arguments: null);\n\n var consumer = new EventingBasicConsumer(channel);\n consumer.Received += (model, ea) =>\n {\n var body = ea.Body.ToArray();\n var message = System.Text.Encoding.UTF8.GetString(body);\n Console.WriteLine("Received message: {0}", message);\n };\n\n channel.BasicConsume(queue: "message_queue",\n autoAck: true,\n consumer: consumer);\n\n Console.WriteLine("Press [enter] to exit.");\n Console.ReadLine();\n }\n }\n}\n\n\n上述代码使用 RabbitMQ 来实现消息队列的发送和接收。在 SendMessage 方法中,我们创建了一个连接、一个通道,并声明了一个名为 message_queue 的队列。然后,我们将消息发送到该队列中。\n\n在 ReceiveMessage 方法中,我们同样创建了一个连接、一个通道,并声明了与发送端相同的队列。然后,我们使用 EventingBasicConsumer 类来订阅队列中的消息,并在接收到消息时进行处理。\n\n你可以根据自己的需求进行修改和扩展。
原文地址: https://www.cveoy.top/t/topic/p1Ut 著作权归作者所有。请勿转载和采集!