문제

팀 리더가 새로운 버전의 제품 옵션으로 MSMQ를 조사 해달라고 요청했습니다. 현재 버전에서 SQL 서비스 브로커를 사용합니다. 나는 실험과 인터넷 검색에 대한 공정한 공유를 수행하여 어떤 제품이 내 요구에 더 나은지 찾았지만 프로그래밍 답변을 위해 알고있는 최고의 사이트를 요구할 것이라고 생각했습니다.

몇 가지 세부 사항 :

  • 우리의 클라이언트는 .NET 1.1 및 2.0 코드입니다. 메시지가 전송되는 곳입니다.
  • SQL Server 2005 인스턴스의 대상. 모든 메시지는 데이터베이스 업데이트 또는 인서트입니다.
  • 우리는 거래로 취급되어야하는 몇 가지 업데이트를 보낼 것입니다.
  • 완벽한 메시지 복구 가능성이 있어야합니다. 메시지를 잃을 수 없습니다.
  • 대상 SQL 서버가 다운 되어도 비동기식이어야하며 메시지를 수락 할 수 있어야합니다.
  • 자체 대기열 솔루션을 개발하는 것은 옵션이 아닙니다. 우리는 작은 팀입니다.

지금까지 발견 한 것 :

  • MSMQ 및 SQL 서비스 브로커는 모두 작업을 수행 할 수 있습니다.
  • 서비스 브로커는 트랜잭션 메시지를 위해 더 빠른 것으로 보입니다.
  • Service Broker는 어딘가에서 실행되는 SQL Server가 필요하지만 MSMQ에는 어딘가에서 실행되는 구성된 Windows 시스템이 필요합니다.
  • MSMQ는 클러스터에서 더 나은/더 빠르거나 쉽게 설정/실행하는 것으로 보입니다.

내가 뭔가를 놓치고 있습니까? 여기에 명확한 승자가 있습니까? 모든 생각, 경험 또는 링크는 가치가 있습니다. 고맙습니다!

편집 : 일부 클라이언트 코드에 사용되는 사용자 정의 DB 프레임 워크가 있기 때문에 서비스 브로커를 고수했습니다 (트랜잭션을 더 잘 처리 함). 이 코드는 거래를 위해 SQL을 캡처했지만 그렇지 않았습니다. 클라이언트 코드는 모두 .NET의 모든 버전 1.1이므로 모든 클라이언트 코드를 업그레이드해야합니다. 당신의 도움을 주셔서 감사합니다!

도움이 되었습니까?

해결책

방금 응용 프로그램을 서비스 중개인에서 MSMQ로 마이그레이션 한 후 MSMQ 사용에 투표해야합니다. 고려해야 할 몇 가지 요소가 있지만 대부분 데이터를 사용하는 방법과 처리 위치와 관련이 있습니다.

  • 데이터베이스에서 처리가 수행되는 경우? 서비스 중개인
  • 데이터 이동이라면? 서비스 중개인
  • .NET/COM 코드에서 처리가 수행됩니까? MSMQ
  • 원격 분산 트랜잭션 (예 : SQL과 다른 상자에서 처리)이 필요합니까? MSMQ
  • 목적지가 다운되는 동안 메시지를 보낼 수 있어야합니까? MSMQ
  • Nservicebus, Masstransit, Rhino-ESB 등을 사용 하시겠습니까? MSMQ

무엇을 선택하든 고려해야 할 사항

  • 대기열의 건강을 어떻게 알 수 있습니까? 두 옵션 모두 장애 조치를 다르게 처리합니다. 예를 들어 서비스 중개인 응용 프로그램을 중단 할 수있는 특정 시나리오에서 대기열을 비활성화합니다.
  • 보고를 어떻게 수행 하시겠습니까? 보고서에서 이미 SQL 테이블을 사용하는 경우 서비스 중개인 또 다른 동적 테이블이므로 쉽게 맞을 수 있습니다. 이미 성능 모니터를 사용하고있는 경우 MSMQ 더 잘 맞을 수 있습니다. 서비스 중개인 성능 카운터가 많으므로 이것이 유일한 요소가되지 않도록하십시오.
  • 가동 시간을 어떻게 측정합니까? 단지 거래를 잃지 않도록하는 것입니까, 아니면 동시에 응답해야합니까? 나는 분산 된 특성을 발견했다 MSMQ 기본 대기열이 오프라인으로 이동하여 아무것도 잃지 않을 수 있으므로 가동 시간이 더 높아집니다. 반면 서비스 중개인 데이터베이스는 온라인이어야합니다. 그렇지 않으면 잃어 버립니다.
  • 이미 이러한 기술 중 하나에 대한 경험이 있습니까? 둘 다 돌아와서 물릴 수있는 많은 구현 세부 정보가 있습니다.
  • 당신이 무엇을 선택하는지, 기본 대기열 기술을 전환하는 것이 얼마나 쉬운가? 구체적인 구현을 작성하는 일반적인 iqueue 인터페이스를 사용하는 것이 좋습니다. 이런 식으로 당신이 선택한 선택은 당신이 잘못된 것을 발견했다면 나중에 쉽게 바꿀 수 있습니다. 결국, 대기열은 단지 대기열 일 뿐이며 특정 구현에 당신을 잠그지 않아야합니다.

다른 팁

나는 전에 MSMQ를 사용했고 귀하의 목록에 추가 할 유일한 항목은 버전 작성에 대한 전제 조건 점검입니다. 한 사이트가 2000 서버에서 승리 한 문제와 MSMQ V.2, Win 2003 Server 및 MSMQ V3가있는 문제를 해결했습니다. 모든 .NET 코드는 V.3을 대상으로했으며 호환되지 않습니다. 또는 적어도 쉽지는 않습니다.

MSMQ 경로를 가면 고려해야합니다.

MSMQ의 메시지 크기 제한은 그 방향으로 내 파기를 중단했습니다. 저는 프로젝트를위한 서비스 중개인을 배우고 있습니다.

목적지가 다운되는 동안 메시지를 보낼 수 있어야합니까? MSMQ

왜 그런지 이해가 안 돼요? SSB는 문제없이 연결이 끊긴 대상으로 메시지를 보낼 수 있습니다. 이 모든 메시지는 전송 대기열로 이동하며 대상이 도달 할 수있을 때 전달됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top