1. 程式人生 > 其它 >RabbitMQ初識及簡單實踐

RabbitMQ初識及簡單實踐

這篇文章比較全面詳細的介紹了RabbitMQ中涉及的相關概念及元件,推薦閱讀超詳細的RabbitMQ入門,看這篇就夠了!-阿里雲開發者社群 (aliyun.com).

文章是java實現的,因為工作使用的是C#, 所以使用C#進行實踐。

1. 生產者:

 1 //1、建立連線工廠
 2 var factory = new ConnectionFactory()
 3  {
 4     HostName = "localhost",
 5     Port = 5672,
 6     Password = "guest",
 7     UserName = "guest",
 8     VirtualHost = "
/" 9 }; 10 using (var connection = factory.CreateConnection()) 11 { 12 var channel = connection.CreateModel(); 13 // 2、定義佇列 14 channel.QueueDeclare(queue: "test", 15 durable: false, 16 exclusive: false, 17 autoDelete: false, 18 arguments: null
); 19 20 string message = "Hello World!"; 21 var body = Encoding.UTF8.GetBytes(message); 22 23 // 3、傳送訊息 24 var properties = channel.CreateBasicProperties(); 25 properties.Persistent = true; // 設定訊息持久化 26 channel.BasicPublish(exchange: "", 27 routingKey: "test", 28 basicProperties: properties,
29 body: body); 30 } 31 _logger.LogInformation("成功傳送訊息");

2. 消費者:

 1     // 1、建立連線
 2     var factory = new ConnectionFactory()
 3     {
 4         HostName = "localhost",
 5         Port = 5672,
 6         Password = "guest",
 7         UserName = "guest",
 8         VirtualHost = "/"
 9      };
10      var connection = factory.CreateConnection();
11      var channel = connection.CreateModel();
12      channel.QueueDeclare(queue: "test", durable: false, exclusive: false, autoDelete: false, arguments: null);
13      var consumer = new EventingBasicConsumer(channel);
14      consumer.Received += (model, ea) =>
15                 {
16                     Console.WriteLine($"model:{model}");
17                     var body = ea.Body;
18                     //業務邏輯
19                     var message = Encoding.UTF8.GetString(body.ToArray());
20                     Console.WriteLine(message);
21                 };
22       channel.BasicConsume(queue: "test",
23                                      autoAck: true,
24                                      consumer: consumer);

實踐為 最簡單的單生產者,單消費者模式。