c# msmq 예제

다음 코드 예제에서는 큐에 메시지를 보내고 Order라는 응용 프로그램 별 클래스를 사용하여 큐에서 메시지를 받습니다. 프로젝트 유형을 선택하는 것은 선택 사항이며, 예를 들어, 메시지를 사용하는 비동기 통신에 사용되는 게시자 마이크로 소프트 메시징 큐(MSMQ) 기술이 사용됨에 따라 Windows 응용 프로그램 또는 WPF일 수 있다. MSMQ는 또한 프로세스 간 통신 기능으로 간주될 수 있습니다. 두 프로세스가 “Fire and Forget” 방식으로 서로 통신하기를 원할 때마다 MSMQ는 매우 유용합니다. 사용예를 들어 결제 소프트웨어가 자정에 1000 개의 청구서를 처리해야하고 모든 사용자에게 메일을 보내야하는 경우. 운영자가 소프트웨어를 실행하는 경우와 같이 그는 즉시 알림을 원한다. 운영자는 모든 청구서가 처리될 때까지 기다릴 수 없으며 전자 메일을 받습니다. 여기서 MSMQ는 1000대 고객 이메일 정보를 Queue로 전송하는 결제 소프트웨어로 통신하는 데 중요한 역할을 하며 Queue 이벤트 처리기는 요청을 처리합니다. 이러한 방식으로 운영자는 “현장” 프로세스를 아는 대신 프로세스에 대한 즉각적인 알림을 받습니다.

따라서 1단계: MSMQ가 컴퓨터에 제대로 설치되었는지 확인해야 합니다. 어떻게 확인? 위에서 언급했듯이 Microsoft 메시지 큐 MSMQ는 큐에 대기 중인 메시지를 관리하기 위한 영구 백업 저장소 및 스레드 안전 시스템을 제공하지만 메시지 처리가 실패할 수 있습니다. 예를 들어 메시지를 받을 때마다 인터넷을 통해 파일을 전송하는 경우를 생각해 보십시오. 파일 전송은 서버가 일시적으로 중단되는 등 어느 시점에서 실패할 수밖에 없습니다. 이 경우 메시지가 실패한 것으로 간주됩니다. 일시적인 오류이므로 메시지를 다시 큐에 대기하고 다시 시도해야 합니다. 실패한 메시지를 처리하는 방법에는 여러 가지가 있으며, 가장 명백한 방법은 메시지를 큐 의 맨 위에 다시 배치하여 즉시 다시 시도하는 것입니다. 그러나 메시지의 실패가 본문 내의 일부 잘못된 데이터로 인해 매번 실패할 수 있는 경우(예: 잘못된 FTP 주소 또는 기타 데이터) 메시지는 중독된 메시지이므로 성공적으로 처리할 수 없습니다. 메시지가 매번 큐의 맨 위에 다시 배치되면 큐에 대한 각 수신 호출이 실패할 수밖에 없는 동일한 메시지를 가져오므로 귀중한 처리 시간이 낭비됩니다.

너무 많은 재시도 시도 후(AppSpecific 필드와 같은 속성을 증분하여 계산됨) 메시지를 다시 퀘어하지 않고 대신 실패한 큐로 이동할 수 있습니다. 그러나 실패한 메시지를 처리하는 더 좋은 방법이 있으며, 중독된 메시지를 처리할 수 있습니다. 이 특정 예제에 사용된 기술은 다음과 같이 진행되었습니다: Microsoft 메시지 큐 MSMQ를 사용하는 것은 매우 간단하며 메시지 큐를 열고, 메시지를 보내고, 큐를 닫는 것입니다. 메시지 큐 개체는 IDisposable 인터페이스를 구현하므로 “using” 문을 사용하여 큐를 자동으로 닫고 삭제할 수 있습니다.