멀티 캐스팅, 메시징, ActiveMQ 대 MSMQ?
문제
저는 Google 제품에 대한 메시징 / 알림 시스템을 개발하고 있습니다. 기본 요구 사항은 다음과 같습니다.
- 실행 후 삭제
- 발신자가 메시지를 삭제하라고 할 때까지 계속 유지되는 메시지 집합 (업데이트 가능)
라이브러리는 C #으로 작성됩니다. Spring.NET은 멋진 메시징 추상화가 많이 포함 된 마일스톤 빌드를 출시했습니다. 이것은 훌륭합니다. 저는이를 광범위하게 사용할 계획입니다. 내 기본적인 질문은 메시지 브로커에 대한 질문입니다. 내 아키텍처는 앱-> 메시지 브로커 큐-> 모든 메시지를 수신해야하는 위치로 전달하고, 오래 지속되는 메시지의 수명주기를 처리하는 서버 앱-> 메시지 브로커 큐 또는 주제-> 수신과 유사합니다. 앱.
마지막으로 질문 : 어떤 메시지 브로커를 사용해야합니까? 저는 ActiveMQ 에 편향되어 있습니다. 우리는 지난 프로젝트에서 사용했고 정말 좋았습니다. Java라는 점을 제외하고는 단 한 번의 공격도 생각할 수 없으며 Java를 서버 어딘가에 설치해야하며이 서비스를 사용할 일부 사람들에게는 어려운 판매가 될 수 있습니다. 제가 살펴본 다른 옵션은 MSMQ입니다. 알 수없는 이유로 편향되어 있으며, 멀티 캐스트를 잘 지원하지 않는 것 같습니다.
누군가 이와 같은 용도로 MSMQ를 사용한 적이 있습니까? 찬반 양론, 투표에 영향을 줄 수있는 요소가 있나요?
마지막으로 .NET 2.0을 사용하고 있습니다.
해결책
ActiveMQ 작업을 할 때 다소 편견이 있지만 위의 MSMQ에 대해 나열된 거의 모든 혜택도 적용됩니다. 정말 ActiveMQ에.
ActiveMQ의 추가 이점은 다음과 같습니다.
- 교차 언어 클라이언트 액세스 및 다중 프로토콜 지원 지원
- 엔터프라이즈 통합 패턴 에 대한 탁월한 지원
- 고급 기능 .org / exclusive-consumer.html "rel="noreferrer "> 독점 대기열 및 메시지 그룹
당신이 언급 한 주요 단점은 ActiveMQ 브로커가 Java로 작성되었다는 것입니다. 그러나 정말로 원한다면 IKVM에서 .net 어셈블리로 실행하거나 Windows 서비스로 실행하거나 GCJ를 통해 DLL / EXE로 컴파일 할 수 있습니다. MSMQ는 .NET으로 작성 될 수도 있고 작성되지 않을 수도 있습니다.하지만 제대로 구현되는 방법은 중요하지 않습니까?
MSMQ를 선택하든 ActiveMQ를 선택하든 상관없이 적어도 NMS API 사용을 고려하는 것이 좋습니다. 당신이 말했듯이 Spring.NET에 훌륭하게 통합됩니다. 이 API의 MSMQ 구현은 물론 StompConnect를 통해 다른 JMS 공급자를 지원하는 TibCo, ActiveMQ 및 STOMP에 대한 구현이 있습니다. .
따라서 NMS를 API로 선택하면 독점 기술에 종속되는 것을 피할 수 있으며 언제든지 메시징 제공 업체를 쉽게 전환 할 수 있습니다. 모든 코드를 독점 API에 잠그는 대신
다른 팁
MSMQ의 장점
- Windows에 내장되어 있습니다.
- 거래를 지원하며 거래가없는 대기열도 지원합니다.
- 설치가 정말 쉽습니다.
- 광고 통합
- 빠르지 만 트래픽이 더 빠른지 확인하려면 ActiveMQ와 MSMQ를 비교해야합니다.
- .NET은 그것의 탄생을 지원합니다
- 사격 후 망각 지원
- 만 보는 독자가 있다면 대기열을 들여다 볼 수 있습니다.대기열에서 메시지를 수정할 수 있는지 확실하지 않습니다.
단점 :
- 4MB 메시지 크기 제한
- 2GB 대기열 크기 제한
- 큐 항목은 디스크에 보관됩니다.
- 주요 MS 제품이 아니고, 문서가 다소 불명확하거나 사용 후 몇 년이 지났습니다.
다음은 MSMQ 에 대한 좋은 블로그입니다.
zeromq 를 살펴보세요.가장 빠른 메시지 대기열 중 하나입니다.
TIBCO Enterprise Messaging Service-EMS는 멀티 캐스팅, 라우팅을 지원하고 JMS 사양을 지원하며 파일을 사용한 fire-forget 및 메시지 지속성과 같은 요구 사항을 포함한 엔터프라이즈 급 기능을 제공하는 고성능 메시징 제품인 EMS를 살펴볼 것을 제안합니다./ database는 공유 상태를 사용합니다.
참고로 FEDEX는 TIBCO EMS에서 실행됩니다. 메시징 인프라로.
http://www.tibco.com/software/messaging/enterprise_messaging_service/default.jsp
내가 제공하면 다른 많은 참고 문헌이 있습니다. 정말 놀랄 것입니다.
그 경기장에는 너무 많은 옵션이 있습니다 ...
무료 : MantaRay는 JMS를 완전히 준수하는 P2P 시스템입니다.Mantaray의 흥미로운 부분은 메시지가 전달되는 위치를 정의하기 만하면되고 MantaRay는 메시지를 목적지로 전달하기 위해 메시지를 라우팅하므로 메시징 패브릭에서 개별 노드의 오류에 더 강합니다.
유료 : 직장에서 저는 수백 개의 노드가있는 IBM WebSphere MQ 메시징 시스템을 관리하고 있으며 매우 훌륭하다는 것을 알게되었습니다.우리는 최근에 Tibco EMS를 구입했는데 사용하기도 꽤 좋을 것 같습니다.
폴 /