【问题标题】:Send one or more events to EventHub Azure向 EventHub Azure 发送一个或多个事件
【发布时间】:2019-03-01 18:43:21
【问题描述】:

我在 Azure 上使用逻辑应用程序 (LA) 每 3 分钟查询一次我的数据库。 然后 LA 使用 EventHub 连接器将我的查询结果表发送到 Azure 流分析 (ASA)。

通常结果表有大约 100 行,在高峰时间肯定更多。

我以为每次发送一行 Eventthub 消息,会招致很多调用,因此可能会延迟 ASA 的逻辑(?)

我的问题是:

  • 如何通过 LA 的 Eventhub Action Connector 发送多条消息? 我看到有一个选项:向 Eventhub 发送一个或多个事件,但无法弄清楚要在内容中放入什么。尝试放置表格(数组)。以下请求正文有效。 例如正文:

    [ { "ContentData": "dHhuX2FnZV9yZXN1bHQ=", "Properties": { "tti_IngestTime": "2018-09-26T20:10:55.4480047+00:00", "tti_SLAThresholdMins": 330, "MinsPastSla": -6 } }, { "ContentData": "AhuBA2FnZV9yZXN1bHQ=", "Properties": { "tti_IngestTime": "2018-09-26T20:10:55.4480047+00:00", "tti_SLAThresholdMins": 230, "MinsPastSla": -5 } } ]

    • 将 100 个事件一一发送到 ASA,是否存在性能问题?

谢谢!

【问题讨论】:

  • 关于是否有任何性能问题?这取决于您的性能要求。我一直在将数千个事件从一个逻辑应用一个一个地发送到一个事件中心(包括一些额外的处理),最多可能需要几分钟。但这是好是坏取决于您的用例。此外,数字对您来说可能完全不同。
  • 感谢您的回复!我似乎没有找到太多 ASA 消息架构指令。因此,我查看了发送给 eventHub 的一条一条消息,并模仿它来编写多条消息。 (现在在问题正文中更新)所以基本上,单个消息是 { "ContentData": someBase64String, "Properties": { ... my message object ...} } ,然后我创建一个包含多个 msg 的数组。仍然无法从 ASA 取样。 :(
  • 我从未尝试在一个请求中向 EH 发送多条消息。当然,应该可以将这些消息包装在一个有效的 JSON 对象中,但是,ASA 始终将其视为一个事件。这可能不是你想要的。您是否尝试过一一发送每个事件?
  • 再次感谢 Onkel Toob,我随机发现了看似可行的答案。我在下面发了。哇,这根本没用多久...T_T

标签: azure azure-logic-apps azure-eventhub


【解决方案1】:

似乎找到了答案。

(1) 我发送的 JSON 看起来是正确的,并且对 EvenHub 的发布请求是成功的。

帖子正文为 [{}, {}, {}],格式正确

(2) ASA 无法读取流可能是因为无法反序列化来自 EventHub 的消息。

我碰巧更改了对发送到 EventHub 的“ContentData”的 base64 字符串的编码方式。好像是发给EH的消息,

{ "ContentData": "some base64() string", "Properties": {} },

base64() 需要对“属性”值进行编码,而不是其他任何内容,ASA 才能反序列化消息。

它不起作用,因为我使用随机字符串而不是“属性”的值进行编码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    相关资源
    最近更新 更多