2012-10-13 2 views
4

로컬 (local) 데이터 센터에 지속성 계층이있는 Amazon (AWS) 클라우드에 새로운 ASP MVC 주문 응용 프로그램을 만들고 있습니다. 나는 CQRS 패턴을 사용할 것이다. 프로젝트의 목표는 대기열을 사용하여 로컬 데이터 센터에서 비동기 적으로 처리하고 처리 할 수있는 쓰기 (명령/이벤트)를 저장하고 전달하는 고 가용성입니다. 그런 다음 WAN 또는 로컬 데이터 센터에서 오류가 발생하는 경우 클라우드 MVC 앱은 주문을 받고 처리가 재개 될 때까지 대기열에 올려 놓을 수 있습니다.NServiceBus를 사용하여 AWS에서 메시지 대기열 처리 및 처리를 구현하는 방법

첫 번째 생각은 대기열에 AWS SQS를 사용하고 수신 메시지/이벤트를 처리하기 위해 내 자신의 C# 응용 프로그램에서 자체 대기열 소비자/발송자/처리기를 만드는 것이 었습니다.

MVC (아마존 @) -> 이벤트/POCO -> SQS -> QueueReader (@ 내 데이터 센터) ->

DB

은 그 때 나는 NServiceBus을 발견했다. NSB는 메시지 처리, 재시도, 오류 처리 등과 같은 많은 세부 정보를 매우 잘 처리하는 것으로 보입니다. 바퀴를 재발견하는 것이 싫고 NServiceBus는 완벽한 기능의 완성품처럼 보입니다.

그러나 앞으로의 연구에서 NServiceBus는 실제로 물리적으로 분리 된 환경 (Cloud to My Datacenter)에서 WAN을 통해 사용하기위한 것이 아닙니다. Google과 SO는 필요에 따라 WAN을 통해 NServiceBus를 사용하는 좋은 그림을 그리지 않습니다.

이 작업을 수행 할 수 있습니까? (아마존 @)

MVC -> 이벤트/POCO -> NServiceBus WAN을 통해 -> NServiceBus 처리기 (들) ->

DB

어떻게 WAN을 통해 NServiceBus를 사용할 수 있습니까? 아니면 아마존과 내 로컬 데이터 센터 간의 대기열 처리 및 메시지 처리를 처리하는 더 좋은 솔루션이 있습니까?

+0

NServiceBus는 이제 SQS를 완벽하게 지원하므로 데이터 센터에서 코드를 가지고 계획했던 것과 정확히 똑같이 할 수 있으므로 아마존에서 MVC 프런트 엔드가 보낸 메시지를 받아 들일 수 있습니다. 다음은 NServiceBus의 SQS에 대한 설명서입니다. https://docs.particular.net/transports/sqs/ –

답변

6

NServiceBus에 대한 전송으로 SQS를 사용하는 것은 옵션이지만, here과 같은 절충 사항을 알아야합니다. Azure 큐 스토리지로 수행되었지만 훌륭한 SQS 구현을 알지 못합니다.

또 다른 옵션은 데이터 센터와 AWS VPC 사이에 VPN을 만드는 것입니다. 이렇게하면 해당 보안 그룹의 적절한 포트를 여는 경우 AWS 서버와 데이터 센터간에 직접 MSMQ 통신이 가능합니다. 이 접근법에는 몇 가지주의 사항이 있습니다. 첫째, 엔드 포인트 이름에 관한 것입니다. NServiceBus 버전 2.6 이하에서는 적절한 DNS를 설정해야하는 끝점의 이름으로 Environment.MachineName을 사용합니다. 나는 최신 버전이 기계의 IP 주소를 사용한다고 생각한다. VPN이 시스템을 더 많이 결합하게 만드는 것이 더 중요한 경고 일 것입니다.

또 다른 방법은 gateway이라는 NServiceBus 개념을 사용하는 것입니다. 그러나 이것은 논리적 인 비즈니스 결정이어야합니다. 게이트웨이는 일반 전송과 매우 유사하지만 대개 다른 비즈니스 컨텍스트를 가지고 있습니다.

+0

VPN은 코딩 측면에서 보면 가장 간단합니다. 다른 옵션은 SQS를 폴링 할 사내 솔루션의 게이트웨이 채널을 만드는 것입니다. –

+0

VPN이 옵션이 아니라고 가정하고 내 주요 목표는 온 - 프레미스에서 클라우드를 분리하는 것입니다. 1) MVC -> NSB.Gateway -> WAN -> NSB.Gateway 또는 2) MVC -> 이벤트 POCO -> SQS (WAN) -> NSB를 온 - 프레미스 전용 메시지 처리기로 사용합니까? –

3

NServiceBus에는 물리적으로 분리 된 데이터 센터 브리징을 처리하는 게이트웨이 구성 요소가 포함되어 있습니다.

http://docs.particular.net/nservicebus/gateway/

그것은 기본적으로 HTTP 채널로 메시지를 이동하고 당신은 일반적으로 웹 서비스와 거라고 재시도 논리 및 중복 제거 문제를 처리합니다.

NuGet을 통해 전체 NServiceBus 패키지를 다운로드하면 샘플이 가득한 폴더가 표시되며 그 중 하나는 게이트웨이 사용법을 다루며 시작하기에 좋은 방법입니다.

관련 문제