그런 다음 ReadQueue 메서드를 호출하여 아래 코드 조각에 표시된 대로 메시지 큐에 저장된 메시지를 검색할 수 있습니다. 이제 큐가 있는지 확인하고 큐가 있는지 확인하고 큐가 있는지 확인하려는 경우 메시지를 보내라고 가정합니다. 큐가 없는 경우 새 큐를 만든 다음 메시지를 보낼 수 있습니다. 이것은 바로 다음 코드 목록이 수행하는 일입니다. 메시지 큐 = 새 메시지 큐(@”.개인$IDG”); MSMQ 3.0에 도입되었습니다. 큐와 연결된 멀티캐스트 주소를 가져옵니다. 사용 권한 목록을 운영 체제의 기본값으로 재설정합니다. 기본 목록에 추가한 큐 권한을 제거합니다. 우리는 대기열에서 우리에게 메시지를 전달하기 위해 서버에게 말하려고합니다. 비동기적으로 메시지를 푸시하기 때문에 콜백을 제공합니다. 이것이 이벤트기본소비자.Received 이벤트 처리기가 수행하는 것입니다.
데이터는 Queue 자체에 어떤 유형의 메시지가 나오는지 표시하여 검색할 수 있습니다. 다음 코드는 아이디어를 묘사합니다 : 보내기 버튼은 본문으로 간단한 메시지를 보내고 다른 하나는 linq 쿼리로 필터링 할 수있는 개체를 보냅니다. MessageQueue는 두 가지 유형의 메시지 검색을 지원합니다: 동기 및 비동기. 동기 메서드인 Peek 및 Receive는 프로세스 스레드가 새 메시지가 큐에 도착할 때까지 지정된 시간 간격을 기다리게 합니다. 비동기 메서드인 BeginPeek 및 BeginReceive는 메시지가 큐에 도착할 때까지 기본 응용 프로그램 작업을 별도의 스레드에서 계속하도록 허용합니다. 이러한 메서드는 콜백 개체 및 상태 개체를 사용하여 스레드 간에 정보를 통신하는 작업을 수행합니다. 설정은 게시자와 동일합니다. 연결 및 채널을 열고 사용할 큐를 선언합니다. 이것은 Send가 게시하는 큐와 일치합니다. 메시지 큐의 또 다른 경쟁 업체는 웹 서비스입니다. 웹 서비스에서 메시지를 잃어버리면 대부분의 처리 오류가 클라이언트의 어깨에 있는 반면 메시지 큐의 지속성은 더 큽입니다.
2. MSMQ가 설치되면 MSMQ 기능을 확장합니다. MSMQ 3.0에 도입된 대기열이 있습니다. 비트랜잭션 큐에서 지정된 조회 식별자와 일치하는 메시지를 엿봅니다. 개발자는 저장할 개체를 바디 메시지에 할당할 수 있으며 Formatter 메시지는 메시지를 큐에 저장하기 전에 직렬화하는 방법을 갖습니다. 직렬화된 내용은 BodyStream 속성에서 찾을 수 있습니다. 메시지 게시자(보낸 자) Send.cs 메시지 소비자(수신자) Receive.cs 호출합니다. 게시자는 RabbitMQ에 연결하고 단일 메시지를 보낸 다음 종료합니다.