2016-07-06 1 views
0

eventhub에 데이터를 보내야하지만 크기가 너무 크기 때문에 처리가되지 않습니다. 데이터를 압축하여 이벤트 허브에서 조인하는 데이터 또는 일부 명령을 압축하는 방법이 있습니까? 내가 보내 다음과 같은 자바 코드를 사용하고 있습니다 :EventData를 Azure로 보내는 중 Eventhub가 256k보다 큰 경우

EventData sendEvent = new EventData(payloadBytes); 
EventHubClient ehClient = EventHubClient.createFromConnectionStringSync(connStr.toString()); 
ehClient.sendSync(sendEvent); 

payloadBytes가 너무 큰 경우 내 옵션은 무엇입니까?

+0

어떻게 데이터를 보냅니 까? SendBatchAsync를 사용합니까? 또는 이미 단일 이벤트가 너무 큽니까? 큰 메시지를 많이 보내려면 이벤트 허브를 사용하는 것이 좋습니다. –

+0

EventData sendEvent = new EventData (payloadBytes)를 사용하고 있습니다. EventHubClient ehClient = EventHubClient.createFromConnectionStringSync (connStr.toString()); ehClient.sendSync (sendEvent); 일괄 적으로 메시지를 보내는 데 사용할 수있는 SendBatchAsync 메서드가 있습니까? – Aparna

+3

예, https://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.eventhubclient.sendbatchasync.aspx를 참조하십시오. 그러나 단일 payloadBytes가 이미 256보다 크므로 도움이되지 않을 것입니다. KB. 페이로드를 줄이거 나 여러 이벤트에 분할해야합니다 (성능 향상을 위해 SendBatchAsync를 사용하여 보낼 수 있음). 압축 (압축) 또는 분할 (분할) 할 방법이 없으므로 직접 작성해야합니다. –

답변

0

사용 사례와 게시 할 데이터의 종류를 설명해 주시겠습니까? 올바른 솔루션을 찾는 데 도움이됩니다. 내 프로젝트에서 사용한 몇 가지 일반적인 옵션은 다음과 같습니다.

  • 이벤트 허브가 here 설명대로 이벤트가 스트리밍을 위해 설계되었습니다 : 스트리밍 메시지 브로커 또는 이벤트를 필요로 시스템을 설계 할 때

    일부 우려가 염두에 두어야합니다. 방대한 양의 이벤트가 발생하면 확장이 잘됩니다.

  • 메시지 당 256KB 제한은 일반적으로 텍스트 기반 인 이벤트를 전송하는 데 필요한 것보다 훨씬 길다.

    1. 우리는 우리의 모 놀리 식 시스템의 내부 이벤트를하는 나중에 게시해야 : 256K가 충분하지 때 내 프로젝트에서

나는 여기에 내가 그것을 해결하는 방법이며, 두 개의 서로 다른 사용 사례가 있었다 외부의 Microservices가 소비 할 수 있습니다. 대부분의 경우 메시지는 작았지만 때로는 크기가 256K보다 약간 더 커지고 수정하기가 쉬워졌습니다.이를 게시하기 전에 압축 한 다음 수신자에게 압축을 풉니 다. 좋은 샘플 here을 찾을 수 있습니다.

  • 두 번째 시나리오에서 메시지는 압축이 충분하지 않은 256K보다 크기 때문에 먼저 해당 내용의 BLOB를 만든 다음 해당 BLOB에 대한 참조로 이벤트를 게시 한 다음 이벤트 수신자가 아무리 큰지 블롭의 내용.

  • 대부분의 사용 사례는 다루지 만 유용하지 않은 경우 문제에 대해 자세히 알려주십시오.

    +0

    답변을 주셔서 감사합니다. 필자의 유스 케이스는 장치에서 원격 측정 데이터를 수집하는 것이다.eventhub 이후에 스트림 분석 쿼리가 있었고 powerbi로 이동했기 때문에 zip이 작동하지 않았습니다. 어쩌면 eventhub는 올바른 도구가 아닙니다. 대신 IOThub를 시도해보십시오. – Aparna

    +0

    IOThub는 이벤트 후드에서 이벤트 허브를 사용합니다. –