2017-11-27 5 views
0

하나의 제한된 컨텍스트 (소스)에서 다른 bc (대상)로 데이터를 복제하려는 엔터프라이즈 시스템에서 작업하고 있습니다. 데이터의 양이 많을 때 필요한 경우 데이터를 가져 오지 않고 대상 BC에 데이터를 저장하려고합니다.문서 메시지 대 메시지 풍부화

많은 메시징 패턴을 검토했지만 문서 메시지와 메시지 내용을 결정하는 데 어려움을 겪고 있습니다.

  1. 문서 메시지 - 원본에서 이벤트가 발생하면 전체 메시지를 서비스 버스를 통한 브로드 캐스트를 통해 대상으로 보냅니다. 장점 : 단순한 목적지는 소스와 분리되어 있습니다. 단점 : 메시지 크기

  2. 메시지 강화 - 엔티티 ID와 링크를 포함하는 메시지를 서비스 버스를 통한 브로드 캐스트를 통해 소스 데이터에 다시 보냅니다. 장점 : 라이트 메시지. 단점 : 소스에 더 많이 결합 된 대상 (페이로드의 링크를 통해 완화되었지만) 데이터를 가져 오기 위해 소스로 다시 동기화 요청이 필요합니다.

여기에서 알아야 할 다른 고려 사항이 있습니까? 나는 서비스 버스를 통해 큰 메시지가 나쁜 것임을 읽었습니다. 그러나 얼마나 큰가? ?? 왜 그렇게 나쁜거야? Azure Service Bus에는 메시지 당 최대 256kb의 제한이 있지만 메시지는 최대 1kb입니다.

도움을 주시면 감사하겠습니다 ... 감사합니다.

+1

메시지가 너무 작 으면 (예 : Azure Service Bus) 문제가 발생하지 않습니다. 그것은 당신이 만들고 살아야 할 건축상의 결정입니다. 예를 들어, 원산지 시스템이 당신이 떨어져 나가고 싶은 단분자단이라면, 예를 들어 이벤트 기반 (문서 메시지)으로 갈 것입니다. BTW, 최대 메시지 크기는 [claim check pattern] (http://www.enterpriseintegrationpatterns.com/patterns/messaging/StoreInLibrary.html)을 통해 해결할 수 있습니다. 일반적으로 [외부 저장소] (https://www.nuget.org/packages/servicebus.attachmentplugin)를 사용합니다. –

답변

1

1킬로바이트 확실히 서비스 버스에 대한 큰 아무것도 아니다, 그래서 당신이 말하는 것처럼 당신이 옵션 1.

에 가도 생각, 페이로드의 제한은 KB 256,하지만 당신은 더 큰 메시지를 보낼 경우에도 - 일반적인 패턴은 페이로드를 BLOB 저장소에 넣은 다음 서비스 버스를 통해 링크를 보내는 것입니다. 그러나 맞는 메시지를 위해 - 괴롭히지 마라.

많은 메시지를 단일 작업으로 보낼 때 일괄 처리 당 256KB의 제한이 적용됩니다. 여전히 1KB 크기로 배치 할 수있는 공간이 충분합니다.