RabbitMQ.NET 메시지 큐 사용 설명

본 논문 의 사례 는 RabbitMQ.NET 메시지 큐 의 사용 방법 을 공유 하 였 으 며,여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
우선 설치 패 키 지 를 다운로드 합 니 다.저 는 모두 win 7 64 비트 입 니 다.
홈 페이지 에 가서 otp 다운로드win64_19.0.exe  rabbitmq-server-3.6.3.exe 와 설치 되 어 있 습 니 다.
그리고 프로 그래 밍 을 시 작 했 습 니 다.
(1)생산자 클래스 생 성:

class Program 
 { 
   private static void Main() 
   { 
     //  RabbitMQ      
     var connectionFactory = new ConnectionFactory 
     { 
       HostName = "127.0.0.1", 
       Port = 5672, 
       UserName = "guest", 
       Password = "guest", 
       Protocol = Protocols.DefaultProtocol, 
       AutomaticRecoveryEnabled = true, //     
       RequestedFrameMax = UInt32.MaxValue, 
       RequestedHeartbeat = UInt16.MaxValue //       
     }; 
     try 
     { 
       using (var connection = connectionFactory.CreateConnection()) 
       { 
         using (var channel = connection.CreateModel()) 
         { 
           //      ,       
           channel.ExchangeDeclare("SISOExchange", ExchangeType.Direct, true, false, null); 
           //      ,     ,      ,       
           channel.QueueDeclare("SISOqueue", true, false, false, null); 
           //          
           channel.QueueBind("SISOqueue", "SISOExchange", "optionalRoutingKey"); 
 
           //        
           var properties = channel.CreateBasicProperties(); 
           properties.DeliveryMode = 2; //      ,               
 
           //       
           //            (       )    ,      ,     ID,         
           var encoding = new UTF8Encoding(); 
           for (var i = 0; i < 10; i++) 
           { 
             var msg = string.Format("     #{0}?", i + 1); 
             var msgBytes = encoding.GetBytes(msg); 
             //RabbitMQ           ,              。   ,                           。      ,            。             ,           ,            。                      。        ,         ,      。                 。 
             //         :direct,topic,headers,fanout。 
             //Exchange:              ,      exchange:direct, fanout,topic,              ; 
             //RoutingKey: RabbitMQ              ,   Binging   Exchange          ; 
             //Queue:     ,            ,       ,  :    、    、       ,   Consumer  ; 
             channel.BasicPublish("SISOExchange", "optionalRoutingKey", properties, msgBytes); 
           } 
           channel.Close(); 
         } 
       } 
     } 
     catch (Exception ex) 
     { 
       Console.WriteLine(ex.Message); 
     } 
 
     Console.WriteLine("    !"); 
     Console.ReadKey(true); 
   } 
 } 
(1)소비자 클래스 만 들 기:

class Program 
  { 
    private static void Main() 
    { 
      //   RabbitMQ      
      var connectionFactory = new ConnectionFactory 
      { 
        HostName = "127.0.0.1", 
        Port = 5672, 
        UserName = "guest", 
        Password = "guest", 
        Protocol = Protocols.AMQP_0_9_1, 
        RequestedFrameMax = UInt32.MaxValue, 
        RequestedHeartbeat = UInt16.MaxValue 
      }; 
 
      using (var connection = connectionFactory.CreateConnection()) 
      using (var channel = connection.CreateModel()) 
      { 
        //           1    
        channel.BasicQos(0, 1, false); 
 
        //      ,       
        channel.ExchangeDeclare("SISOExchange", ExchangeType.Direct, true, false, null); 
        //      ,      
        channel.QueueDeclare("sample-queue", true, false, false, null); 
        //         
        channel.QueueBind("SISOqueue", "SISOExchange", "optionalRoutingKey"); 
        using (var subscription = new Subscription(channel, "SISOqueue", false)) 
        { 
          Console.WriteLine("    ..."); 
          var encoding = new UTF8Encoding(); 
          while (channel.IsOpen) 
          { 
            BasicDeliverEventArgs eventArgs; 
            var success = subscription.Next(2000, out eventArgs); 
            if (success == false) continue; 
            var msgBytes = eventArgs.Body; 
            var message = encoding.GetString(msgBytes); 
            Console.WriteLine(message); 
            channel.BasicAck(eventArgs.DeliveryTag, false); 
          } 
        } 
      } 
    } 
  } 
소비자-결 과 는 그림 과 같다.

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기