0

나는 MassTransit을 사용하여 마이크로 서비스 명령을 보내고받습니다. 그것은 로컬로 (Azure Service Bus 인스턴스에 원격으로 연결하여) 실행할 때 잘 보내고받습니다. 예 : 로컬 콘솔 응용 프로그램에서 원격 ServiceBus 큐 (서비스 버스 탐색기 3.0.4에서 볼 수 있음)로 명령을 보낸 다음 로컬 TopShelf 서비스가 명령을 받고 처리합니다. 오류에서 언급하지 1.8MB 확실히Azure 서비스 버스의 MassTransit이 MessageSizeExceededException을 throw 함

Microsoft.ServiceBus.Messaging.MessageSizeExceededException: The received message (delivery-id:0, size:1904586 bytes) exceeds the limit (262144 bytes) currently allowed on the link. 

내가 하나의 메시지를 보내고있다, 메시지 오히려 큰이지만 : 내 서비스를 배포 때 다음과 같은 오류와 함께 실패! 그것은 단지 100KB보다 약간 크다.

내가 찾은 메시지는 this post regarding batch partitioning of messages이지만 여러 메시지를 작은 그룹으로 나누고 싶을 때만 관련이 있습니다. 나는 하나의 메시지 만 보내고있다. 또한 MassTransit에서 실제 작업을 수행하는 방법에 대한 설명서를 찾을 수 없습니다. 누군가가 내 메시지는 훨씬 더 큰 생각하는 이유를 cfg.BatchFlushInterval = TimeSpan.FromSeconds(0.05);

  1. 를 설명 할 수 :이 같은 IServiceBusHostConfigurator 설정 시도?
  2. 하나의 메시지를 더 작은 파티션으로 나눌 수 있습니까? 아니면 다른 해결책이 있습니까?
  3. 파티셔닝을 모두 해제해야합니까? 그렇다면 어떻게?
+0

https://groups.google.com/forum/#!forum/masstransit-discuss – stuartd

+0

@stuartd에 문의하십시오. 감사합니다. 포럼에 같은 질문을 올렸습니다. Google 그룹스의 작동 방식에 대해서는 잘 모르겠지만 (예 : 의견을 수렴해야 할 수도 있음) - 어디서나 내 질문을 볼 수는 없습니다. 나는 단지 그것을 다시 게시했다. 그러나 "POST"를 클릭 한 후에 그것은 사라지고 홈페이지로 리다이렉트된다. – hofnarwillie

답변

0

서비스 버스의 메시지 제한은 256k이며 메시지 본문 자체를 둘러싼 직렬화 엔벨로프를 포함합니다. 오류가 발생하여 1.9MB의 메시지 크기를 보게된다면 분명히 꽤 큰 메시지를 전할 것입니다.

메시지 크기를 자세히 살펴보고 첨부 파일이나 이진 데이터 같은 것이 메시지에있는 경우 MessageData<> 기능을 사용하여 대역 외 바이너리 페이로드를 보내보십시오.

+0

감사합니다. 서비스 버스 탐색기를 사용하여 메시지를보고 "크기"가 "106330"이라고 표시됩니다. JSON 본문의 크기를 확인할 때 엔벨로프를 포함하여 예상되는 크기와 상관되는 크기보다 조금 작기 때문에 바이트를 참조한다고 가정합니다. 그래서 제 질문은 여전히 ​​있습니다. 왜 메시지가 1.9MB라고 생각합니까? 첨부 파일이없고 이진 데이터도 없습니다. – hofnarwillie

+0

저에게는 이상하게 보입니다. Azure에서 서비스 버스로 잘 작동하는 클라우드 서비스로 Azure에서 많은 서비스가 실행되고 있음을 알고 있습니다. –

관련 문제