>백엔드 개발 >C#.Net 튜토리얼 >C#의 RabbitMQ 애플리케이션용 그래픽 코드에 대한 자세한 설명

C#의 RabbitMQ 애플리케이션용 그래픽 코드에 대한 자세한 설명

黄舟
黄舟원래의
2017-07-27 16:10:302806검색

남 Rabbitmq가 무엇이고 설치 방법은 자세히 설명하지 않겠습니다. Baidu는 이를 즉시 알고 있으므로 구성 측면에서 더 주의를 기울이십시오.直接 할 말이 많지 않습니다. 먼저 간단한 예제 코드로 바로 이동하세요

보내기 종료:

R
            ConnectionFactory factory = new ConnectionFactory { HostName = "hostname", UserName = "root", Password = "root001", VirtualHost = "hostserver" }; 
                       using (IConnection conn = factory.CreateConnection())
            {                using (IModel im = conn.CreateModel())
                {
                    im.ExchangeDeclare("rabbitmq_route", ExchangeType.Direct);
                    im.QueueDeclare("rabbitmq_query", false, false, false, null);
                    im.QueueBind("rabbitmq_query", "rabbitmq_route", ExchangeType.Direct, null);                    
                    for (int i = 0; i < 1000; i++)
                    {                        byte[] message = Encoding.UTF8.GetBytes("Hello Lv");
                        im.BasicPublish("rabbitmq_route", ExchangeType.Direct, null, message);
                        Console.WriteLine("send:" + i);
                    }
                }
            }
E

수신자:

            ConnectionFactory factory = new ConnectionFactory { HostName = "hostname", UserName = "root", Password = "root001", VirtualHost = "hostserver" }; 
                       using (IConnection conn = factory.CreateConnection())
            {                using (IModel im = conn.CreateModel())
                {                    while (true)
                    {
                        BasicGetResult res = im.BasicGet("rabbitmq_query", true);                        
                        if (res != null)
                        {
                            Console.WriteLine("receiver:"+UTF8Encoding.UTF8.GetString(res.Body));
                        }
                    }
                }
            }

한 번에 천 개를 보내세요. 수신이 완료되면 전송 프로세스가 빠릅니다. 수신됨, 수신이 수신될 때 상대적으로 느립니다. D 述

위의 데모는 한 번의 수신으로 제한됩니다. 동일한 양의 발신자가 어떻게 될지, 여러 수신자가 어떻게 될지, 새로운 수신자를 추가하고 DEMO에서 수신단을 직접 복사할 수 있습니다.

                                                                                                보시다시피 두 수신자가 동시에 실행 중이면 RabbitMQ는 각 메시지를 순서대로 배포합니다. 각 확인을 받으면 메시지가 삭제되고 다음 메시지가 다음 수신자에게 배포됩니다. 이는 주로 RabbitMQ의

루프 배포 메커니즘 때문입니다.一下 간단히 말하면, 여러 수신자가 있을 경우 주기 배포의 이유로 뉴스 수신 단말기가 거의 2개입니다. + 따라서 동일한 메시지를 여러 수신자에게 배포하는 방법은 다음과 같습니다.进行 송신 터미널 코드 수정:

            ConnectionFactory factory = new ConnectionFactory { HostName = "hostname", UserName = "root", Password = "root001", VirtualHost = "host" }; 
                       using (IConnection conn = factory.CreateConnection())
            {                using (IModel im = conn.CreateModel())
                {
                    im.ExchangeDeclare("rabbitmq_route_Fanout", ExchangeType.Fanout);// 路由                    
                    int i = 0;                    
                    while (true)
                    {
                        Thread.Sleep(1000);
                        ++i;                        
                        byte[] message = Encoding.UTF8.GetBytes(i.ToString());
                        im.BasicPublish("rabbitmq_route_Fanout", "", null, message);
                        Console.WriteLine("send:" + i.ToString());
                    }
                }
            }
유형 유형과 비교하면 코드 주석 뒤에 두 개의 코드 섹션이 있음을 알 수 있습니다. FANOUT 메서드를 설정한 후에는 대기열 이름을 지정할 필요가 없습니다. . 1초 동안 일시 중지하는 목적은 결과를 쉽게 확인하고 너무 빨리 새로 고치는 것을 방지하는 것입니다.代 수신측 코드를 다시 살펴보겠습니다.

            ConnectionFactory factory = new ConnectionFactory { HostName = "hostname", UserName = "root", Password = "root001", VirtualHost = "host" };  
                      using (IConnection conn = factory.CreateConnection())
            {                using (IModel im = conn.CreateModel())
                {
                    im.ExchangeDeclare("rabbitmq_route_Fanout", ExchangeType.Fanout);                    
                    var queueOk = im.QueueDeclare();//1
                    im.QueueBind(queueOk.QueueName, "rabbitmq_route_Fanout", "");//2                    
                    var consumer = new QueueingBasicConsumer(im);//3
                    im.BasicConsume(queueOk.QueueName, true, consumer);//4                    
                    while (true)
                    {var _result = (BasicDeliverEventArgs)consumer.Queue.Dequeue();//5                        
                    var body = _result.Body;                        
                    var message = Encoding.UTF8.GetString(body);
                        Console.WriteLine("received:{0}", message);
                    }
                }
새로운 수신단 연결(소비자)이 생성될 때 새 큐를 선언해야 하며, 선언 큐가 지정되지 않은 경우에는 Rabbitmq, 주석 1 코드가 필요합니다. 지정되지 않음 이름이 자동으로 생성되므로 좋습니다.时 두 수신 측의 작업 결과는 기대에 부응합니다.

ㅋㅋㅋ 

위 내용은 C#의 RabbitMQ 애플리케이션용 그래픽 코드에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.