ارسال و دریافت پیام در RabbitMQ

Elementor #991
فعال سازی پنل مدیریت RabbitMQ

Table of Contents

نصب پکیج و کد ارسال کننده پیام به RabbitMQ 
				
					  <ItemGroup>
    <PackageReference Include="RabbitMQ.Client" Version="6.8.1" />
  </ItemGroup>
				
			
				
					using System.Text;
using RabbitMQ.Client;

namespace RabbitMQProducer
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var factory=new ConnectionFactory();
            factory.Uri = new Uri("amqp://user:password@localost:5672");
            var connection=factory.CreateConnection();
            var channel=connection.CreateModel();
            //حالا با استفاده از چنل می توانیم پیغام خودمون را ارسال کنیم
            //پیغام ها وارد اکسچنج میشن 
            //و اکسچنج تصمیم میگیره پیغام را به کدام صف ارسال کند
            //:ایجاد صف
            channel.QueueDeclare("myQueue1", false, false, false, null);

            //پیغام صف
            //رشته یا جیسون
            string message = $"this is test message from my sender at{DateTime.Now}";

            //تبدیل به بایت
            var body=Encoding.UTF8.GetBytes(message);

            //ارسال مسیج به صف
            channel.BasicPublish("", "myQueue1",null,body);

            //آزادسازی منابع
            channel.Close();
            connection.Close();
        }
    }
}
				
			
نصب پکیج و کد دریافت کننده پیام در RabbitMQ 
				
					  <ItemGroup>
    <PackageReference Include="RabbitMQ.Client" Version="6.8.1" />
  </ItemGroup>
				
			
				
					using System.Text;
using RabbitMQ.Client;
using RabbitMQ.Client.Events;

namespace Receiver_Consumer
{
    public class Program
    {
        static void Main(string[] args)
        {
            var factory = new ConnectionFactory();
            factory.Uri = new Uri("amqp://user:password@localost:5672");
            var connection = factory.CreateConnection();
            var channel = connection.CreateModel();

            //چنل را داریم
            //میتوانیم با استفاده از چنل به صف ها وصل شویم
            //و پیغام ها را دریافت کنیم
            channel.QueueDeclare("myQueue1", false, false, false, null);

            //هر زمان ارسال شد این رویداد فرخوانی میشود
            //و اطلاعات را از صف بر می دارد
            var consumer = new EventingBasicConsumer(channel);
            consumer.Received += (model, eventArg) =>
            {
                //دریافت بادی از ارسال کننده
                var body = eventArg.Body.ToArray();
                var message = Encoding.UTF8.GetString(body);
                Console.WriteLine("Receive Message: " + message);

            };

            //حالا باید این کانسیومر رو به یک صف بایند کنیم
            //یعنی این کانسیومر من به کدام صف باید گوش بدهد؟
            channel.BasicConsume("myQueue1", true, consumer);
            
        }
    }
}