将EventData发送到大于256k的Azure Eventhub

时间:2016-07-06 13:41:08

标签: azure-eventhub

我需要向eventhub发送一些数据,但是因为尺寸太大而无法通过。有没有办法压缩数据或某些命令,这些命令会将数据分块并将其连接到事件中心? 我使用以下java代码发送:

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

如果payloadBytes太大,我的选择是什么?

2 个答案:

答案 0 :(得分:1)

另一种方法是从基本层切换到标准层,这使您可以发送最大1MB的事件。 Microsoft文档:Quotas and limits - basic vs standard tiers

答案 1 :(得分:0)

您能描述一下您的用例以及您要发布的数据类型,它有助于找到正确的解决方案。以下是我在项目中使用的一些常用选项。

在设计需要消息代理或事件流的系统时要记住一些问题:

  • 事件中心是为事件流而设计的,如here所述。当你有大量的活动时,它会很好地扩展。

  • 每条消息的256KB限制比传输事件通常需要的更多,通常是基于文本的。

在我的项目中,我有两个不同的用例,当256K还不够时,我就是这样解决的:

  1. 我们需要发布我们的Monolithic系统的内部事件,以后我们的微服务可以使用它。大多数情况下消息很小但有时候它们比256K略大,修复很容易我们在发布之前压缩它们,并在接收器上解压缩它们。你可以找到一个好的样本here

  2. 在第二种情况下,消息大于256K,压缩还不够,我所做的是先创建一个包含该内容的blob,然后通过引用该blob发布事件,然后你的事件接收器可以从blob获取内容,无论它有多大。

  3. 它应涵盖大多数用例,但如果对您没用,请让我更多地了解您的问题。