.NET 雲原生架構師訓練營(模塊二 基礎鞏固 RabbitMQ HelloWorld)--學習筆記

2.6.3 RabbitMQ -- HelloWorld

  • 發送端
  • 接收端
  • rabbitmq container
  • 發送信息

https://www.rabbitmq.com/tutorials/tutorial-one-dotnet.htmlhtml

新建控制檯項目 Sender,Receivergit

添加 nuget 包:RabbitMQ.Clientgithub

發送端

namespace Sender
{
    class Sender
    {
        public static void Main()
        {
            var factory = new ConnectionFactory() { HostName = "localhost" };
            using (var connection = factory.CreateConnection())
            {
                using (var channel = connection.CreateModel())
                {
                    channel.QueueDeclare(queue: "hello",
                        durable: false, // 持久化
                        exclusive: false, // 排它
                        autoDelete: false, // 自動刪除
                        arguments: null);

                    string message = "Hello World!";
                    var body = Encoding.UTF8.GetBytes(message);

                    channel.BasicPublish(exchange: "",
                        routingKey: "hello",
                        basicProperties: null,
                        body: body);
                    Console.WriteLine(" [x] Sent {0}", message);
                }

                Console.WriteLine(" Press [enter] to exit.");
                Console.ReadLine();
            }
        }
    }
}

接收端

namespace Receiver
{
    class Receiver
    {
        public static void Main()
        {
            var factory = new ConnectionFactory() { HostName = "localhost" };
            using (var connection = factory.CreateConnection())
            using (var channel = connection.CreateModel())
            {
                channel.QueueDeclare(queue: "hello",
                    durable: false,
                    exclusive: false,
                    autoDelete: false,
                    arguments: null);

                var consumer = new EventingBasicConsumer(channel);
                consumer.Received += (model, ea) =>
                {
                    var body = ea.Body.ToArray();
                    var message = Encoding.UTF8.GetString(body);
                    Console.WriteLine(" [x] Received {0}", message);
                };
                channel.BasicConsume(queue: "hello",
                    autoAck: true,
                    consumer: consumer);

                Console.WriteLine(" Press [enter] to exit.");
                Console.ReadLine();
            }
        }
    }
}

rabbitmq container

docker run -d -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management

運行成功後能夠訪問(localhost 替換爲服務器地址)docker

http://localhost:15672/#/

用戶名密碼默認爲 guest服務器

替換髮送端,接收端的 localhost 爲服務器地址spa

發送信息

先啓動接收端,再啓動發送端code

發送多條信息htm

Senderblog

channel.QueueDeclare(queue: "hello",
    durable: false, // 持久化
    exclusive: false, // 排它
    autoDelete: false, // 自動刪除
    arguments: null);

Console.WriteLine("Please input your message with enter:");
string message = Console.ReadLine();
while (message != "EXIT")
{
    var body = Encoding.UTF8.GetBytes(message);

    channel.BasicPublish(exchange: "",
        routingKey: "hello",
        basicProperties: null,
        body: body);
    Console.WriteLine(" [x] Sent {0}", message);

    Console.WriteLine("Please input your message with enter:");
    message = Console.ReadLine();
}

先啓動接收端,再啓動發送端rabbitmq

GitHub源碼連接:

https://github.com/MINGSON666/Personal-Learning-Library/tree/main/ArchitectTrainingCamp

知識共享許可協議

本做品採用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可。

歡迎轉載、使用、從新發布,但務必保留文章署名 鄭子銘 (包含連接: http://www.cnblogs.com/MingsonZheng/ ),不得用於商業目的,基於本文修改後的做品務必以相同的許可發佈。

若有任何疑問,請與我聯繫 (MingsonZheng@outlook.com) 。

相關文章
相關標籤/搜索