2012-08-08 6 views
1

우리는 많은 통신 서버가 데이터 패킷을 전송합니다. 업데이트 프로그램이 처리 할 때까지 MSMQ에서 이러한 서버 프로그램에서 오는 이러한 데이터 패킷을 저장하려고합니다. 데이터 손실이 우려되어 이러한 서버 프로그램에서 오는 데이터 패킷을 잃지 않고 효율적이고 효율적인 솔루션을 원합니다.높은 볼륨 설계 MSMQ

최상의 설계 접근 방식은 무엇입니까?

답변

2

음, 시작하기 위해해야 ​​할 두 가지 기본 사항이 있습니다. 먼저 기본 설치를 수정하여 저장소 위치를 미러링 된 드라이브로 이동하거나 해당 서버에서 운영 체제가 부팅되는 드라이브와 동일하지 않은 드라이브로 이동합니다. 또한 고려중인 볼륨에 따라 대기중인 메시지를 보관하기에 충분한 공간이 있는지 확인해야합니다. This 기사에서 다루고 있습니다.

둘째, 신뢰성을 보장하기 위해 트랜잭션과 저널링을 사용하는 것이 좋습니다. 이것은 프로그래밍 및 인프라 문제이기 때문에 this 문서를 살펴보고 MSMQ에 대해 올바르게 프로그래밍하는 방법에 대한 일반 지침을 따르십시오. 예를 들어, This은 MSMQ를 사용한 적이 없다면 좋은 출발점입니다. WCF의 바인딩/전송으로 MSMQ를 사용하려는 경우 배관 부품을 거의 다룹니다. 보고자하는 볼륨과 트래픽을 처리하도록 서비스를 구성해야합니다.

+0

디자인 아이디어에 많은 감사드립니다. WCF 및 MSMQ를 사용하여 트랜잭션 큐와 저널 큐를 설정하고 싶습니다. 우리는 데이터 패킷을 전송하는 많은 응용 프로그램을 보유하고 있습니다. 내 WCF 클라이언트가 이러한 응용 프로그램에서 오는 데이터 패킷에 대해 하나의 포트에서 수신 대기하도록 구성해야합니까? 그게 오버 헤드일까요. 데이터 패킷을 가져 와서 큐에 쓰려고합니다. 다시 볼륨이 높습니다 (하루에 백만 데이터 패킷) 가장 좋은 방법은 무엇입니까? 내가 볼 수있는 샘플 코드는 무엇입니까? WCF는 이것에 좋은가요? 감사합니다. – user180175

+0

거기에 _lot_ 정보가 있습니다. 단지 'wcf msmq 구성'을 검색하면 유용한 기사가 많이 생성됩니다. 이 문제에 대해 어떻게 생각하십니까? 당신이 할 수있는 한 많이 읽고 제안을하는 것이 좋습니다. 볼륨이 문제가 될 것 같지 않습니다. WCF와 MSMQ는 올바르게 구성되었다고 가정 할 때 매우 유용합니다. – kprobst

+0

감사합니다. 나는 더 많은 것을 찾고 찾는다. – user180175

0

우리는 데이터 패킷을 보내는 통신 서버가 많습니다. '데이터 패킷'을 저장하는 경우 WCF는 읽기/MSMQ에 투명을 쓸 수 있습니다 주로하기 때문에

, 나는 WCF에 [Serializable] .NET 객체를 작성하는 것이 좋습니다. 이렇게하면 더 쉽게 작업 할 수 있지만 데이터 패킷에 TCP/IP 또는 바이너리 패킷이있는 경우 정확한 순서로 대기열에 들어가려면 '주문'을 켜야합니다.

MSMQ에도 세션이 있으므로 항목을 함께 그룹화하려는 경우 가능합니다. WCF는이 보증을하지 않습니다. 이를 위해 사용자 지정 코드를 작성해야하지만 특정 세션의 각 메시지에 고유 한 ID를 할당하는 경우 일뿐입니다.

데이터 손실이 우려되어 왔으며 우리는이 서버 프로그램에서 오는 모든 데이터 패킷을 잃지 싶습니다

서버가 다운되면, 그래서

MSMQ는 대기열을 디스크에 데이터를 유지 할 수 있습니다 보존됩니다. MSMQ는 메모리에 대기열을 보관할 수 있지만 더 효율적이지만 충돌/재시작은 대기열 정보를 유지하지 않습니다.

MSMQ 상당히 확대됨에있는 효율적인 (좋은 성과를) 할 수 있습니다. 디스크에 대한 지속성은 약간의 오버 헤드가 있지만 디스크 쓰기 때문에 발생합니다. 성능에 멀티 스레딩이 포함되어있는 경우 MSMQ는 큐가 순차적이므로이 기능을 제공하지 않으므로 순서대로 처리해야합니다. 그러나 이는 대기열 기술의 전형입니다.

MSMQ는 최대 메시지 크기가 4MB이기 때문에 네트워크를 통해 보내려는 메시지를 기억하십시오.

유일한 다른 점은 MSMQ가 대규모로 확장 할 수 없다는 것입니다. 주요 목표는 보장 된 전달입니다.패킷 수를 으로 게시하면 대상에 도달하지만 MSMQ는 다른 컴퓨터로 메시지를 푸시 할 수있는 한정된 기능을 갖추고 있습니다. ThreadPool과 유사한 시스템을 운영하므로 요구 사항 일지라도 확장되지 않습니다.

또한 데이터 작성의 기본 예제를 사용하여 # msmq-wcf 위키에 정보를 추가했습니다.