집 >백엔드 개발 >C#.Net 튜토리얼 >C#의 RabbitMQ 애플리케이션용 그래픽 코드에 대한 자세한 설명
남 Rabbitmq가 무엇이고 설치 방법은 자세히 설명하지 않겠습니다. Baidu는 이를 즉시 알고 있으므로 구성 측면에서 더 주의를 기울이십시오.直接 할 말이 많지 않습니다. 먼저 간단한 예제 코드로 바로 이동하세요
보내기 종료: RConnectionFactory 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 述
루프 배포 메커니즘 때문입니다.一下 간단히 말하면, 여러 수신자가 있을 경우 주기 배포의 이유로 뉴스 수신 단말기가 거의 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!