问题标签 [azure-eventhub]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5493 浏览

azure - 如何从 Microsoft Azure EventHub 获取事件计数?

我想从 Microsoft Azure EventHub 获取事件计数。我可以使用 EventHubReceiver.Receive(maxcount) 但在大量大事件上速度很慢。

有 NamespaceManager.GetEventHubPartition(..).EndSequenceNumber 属性似乎可以解决问题,但我不确定它是否是正确的方法。

0 投票
2 回答
974 浏览

hadoop - 我应该如何将我的事件流保存到冷存储?

我有一个事件流(我们也可以称它们为“消息”,甚至只是“数据”)来自一个基于时间的事件代理。事件代理可以是KafkaAmazon KinesisMicrosoft Event Hubs,尽管假设它是 Kafka。

我的目标是把这个事件流放入冷库;也就是说,通过 Hadoop/Spark 存储数据以供将来分析。这意味着我想采用这种“闲聊”的事件流并将其转换为 HDFS 中的“大块”文件。在云环境中,我可能会使用 S3 或 Azure 存储而不是 HDFS。

我还希望我的解决方案具有成本效益;例如,使用 Avro/ORC 等序列化格式来降低我的磁盘空间成本。我也像一个至少一次保证给定事件被保存到冷库(一次且仅一次的奖励积分)。

我的核心问题是:

  • 人们是如何解决这个问题的?
  • 是否有组件已经处理这种情况?
  • 我需要自己开发解决方案吗?
  • 至少,它们有什么推荐的模式吗?
0 投票
5 回答
5409 浏览

c# - Azure EventHub - 如何删除事件?

像往常一样,我会很感激你的帮助,因为我现在卡住了!!!

我们有一个新项目,我们将使用 Azure EventHub。我创建了演示应用程序,我们可以在其中将事件添加到事件中心,也可以使用 IEventProcessor(Receiver 项目)在其中使用它们。问题是每次执行接收器项目时,我都会看到相同的事件。难道我们不应该期望这些事件在我们使用它们之后会被删除吗?

Receiver 项目中的示例:

有没有办法在 Console.WriteLine 之后删除/删除事件,或者消息会保留一天?使用 Queues ,您可以发出完成信号,但使用 EventHub 时看不到任何命令,我可以使用它来删除/删除它。

任何答复将不胜感激。我们已被指示使用 EventHub,但出于某种原因,这不是选择问题。

0 投票
1 回答
1603 浏览

azure - 哪些 Azure .NET SDK EventHubClient 实例方法是线程安全的?

我正在编写代码,使用EventHubClient将消息从多个线程发布到C# 中的Azure 事件中心。EventHubClient 的文档包含相当标准的样板。

“这种类型的任何公共静态(在 Visual Basic 中为共享)成员都是线程安全的。不保证任何实例成员都是线程安全的。”

在我最希望是线程安全 四种 发送 方法中,没有关于线程安全的附加文档。如果我相信发送方法不是线程安全的,那么每次我希望发送到消息时,我最终都会创建一个新的 EventHubClient 实例。由于底层的 tcp 连接显然被重用,除非采取措施,这可能不会有太多的开销。分区发件人也会出现类似的问题,尽管有一种异步方法可以创建一个,但它们很可能有自己的 AMQP 连接。

尽管有文档,但 EventHubClient 线程的某些(如果不是全部)实例方法是否安全?

对于任何 Azure 人员,是否有可能在文档中对此进行澄清?此类文档问题(假设它看起来可能是错误的)似乎也会影响Azure Table,并且通常在 MSDN 文档中很常见。关于 EventHub,这与KafkaAWS Kinesis明确的线程安全声明形成对比,至少没有明确将所有内容标记为不安全。我没有在 SDK 的开源部分找到 EventHubs,所以无法检查自己。

0 投票
1 回答
1578 浏览

azure - Azure 的 EventProcessorHost 何时调用 IEventProcessor.ProcessEventsAsync?

我正在为 Azure EventHub 编写一个工作者,我希望在EventProcessorHost之上构建;但是,我在通用 文档或 API 文档中都找不到一些可能相关的细节。

EventProcessorHost何时调用 IEventProcessor ProcessEventsAsync

当事件中心流中有新消息时调用此方法。确保仅在处理完每批中的所有事件后才进行检查点。

虽然我们知道在可枚举的消息中会有一些结果,但文档没有说明我们是否可以预期并发调用 ProcessEventsAsync 或在第一次调用正在进行时进行第二次调用。鉴于有关何时检查点的说明,因为第二个调用可以完成并且检查点在流中比第一个调用未完成时处理的更远,所以两者都没有多大意义,但文档中的确认会很好。

我假设每个对CreateEventProcessor(或 IEventProcessor,如果它们是唯一的)调用的输出由 EventProcessorHost 用于一个分区,并且PartitionContext

同样是对CheckpointAsync的调用是否对调用ProcessEventsAsync有任何影响。虽然它不应该允许以后的检查点,但我可以认为这是一个合理的选择。我还有一些关于检查点机制的其他问题,我将在另一个问题中解决(链接将转到此处)。

在发出CloseAsync调用后是否会再进行 ProcessEventsAsync 调用(我认为不会,但没有找到)?是否会使用未完成的 ProcessEventsAsync 返回的任务来完成?

简而言之,对我来说有意义的答案是,在先前调用的任务完成之前,对于给定的处理器,不会调用 ProcessEventsAsync,但我无法从文档中确认这一点。

0 投票
2 回答
2798 浏览

c# - 负载测试 Azure EventHub

我开发了一个使用 Azure EventHub的应用程序- 它声称是用于发布和处理大量事件的非常可扩展的解决方案 - 现在我想对最终解决方案进行负载测试,以查看整个系统是否符合我的要求或我需要向 EventHub 添加更多吞吐量单元以处理预期的入口。

我的客户正在使用 EventHub 的 HTTP 端点来发布事件,这实际上意味着当客户想要发布事件时,它会将 HTTPS POST 请求发送到一个特殊的 URL,例如:

我可以轻松地从本地机器加载测试此服务(例如使用Apache JMeter),但不幸的是,我的本地机器资源有限,因此我无法生成大负载来测试我的服务。

大负载是什么意思?

我需要针对每秒给定数量的请求测试系统——这个给定的数量应该在 20,000 到 100,000 之间——所以在最坏的情况下,我必须以100,000 个请求/秒来测试它。

有多个云负载测试工具可以产生如此大的负载并且它们很好 - 但是,当我必须验证我要测试的系统是我的财产时,云中的每个负载测试工具都需要一些验证步骤。(因此负载测试器不会对 WhiteHouse 网站进行 DDoS。)

为此,我通常必须在运行测试之前将验证令牌上传到负载测试工具检查的 URL。不幸的是,在这种情况下,我无法控制 EventHub 的端点,因此我无法将令牌上传到:

云中是否有任何负载测试解决方案可以与 Azure EventHubs 一起使用?

如果没有,我如何加载测试基于 EventHub 的服务?

0 投票
1 回答
1249 浏览

azure - Azure ServiceBus Eventthub,当某些事件数据过期时,“偏移量”是否仍然可用/持久?

当我编写一些代码来测试天蓝色服务总线上新发布的 EventHub 时。

由于网上的文章很少,msdn 也没有关于事件中心细节的丰富文档。所以我希望有人可以分享你对我的问题的经验。

对于 EventHub,我们有以下声明:

  • 我们使用“偏移量”来记住我们在从某个分区读取事件数据时的位置

  • EventHub 上的事件数据将在一些可配置的时间跨度后过期(自动?)

所以我的问题是,offset当一些事件数据由于过期而被删除时,它是否仍然可用/耐用?

例如,我们在其中一个分区上有以下数据:

在我的处理逻辑运行之后,假设我已经处理了M1and M2,所以偏移量将是M2(使用独占模式时)的开始。

一段时间后,如果我的服务在那段时间停止。M1由于过期而被删除。所以分区会变成:

在这种情况下,当我的服务器再次重新启动时,我之前存储的偏移量是否仍可用于读取M3

当一些最旧的事件数据过期时,当我的消费者服务器正在读取 eventthub 上的事件数据时,我们还可以在运行时对这种情况进行成像,在运行时offset仍然可用吗?

感谢您分享这个问题。

0 投票
1 回答
1007 浏览

azure - 为什么不能在发送前调用 EventData.GetBytes()?

我正在使用 Azure 事件中心,最初在发送数据以尝试计算批处理大小时,我有类似于下面的代码,它会调用EventData获取字节

不幸的是,我会在 SDK 代码中收到异常。

消息正文不能被多次读取。要重用它,请在读取后存储值。

虽然删除对 GetBytes 的最终不必要的调用意味着我可以发送消息,但发生此异常的基本原理相当令人费解。连续两次调用 GetBytes() 是重现相同异常的简单方法,但一次调用将意味着无法成功发送 EventData。

似乎有可能在下面使用了Message ,并且如果作为Message.GetBody文档多次调用,则将其设置为抛出异常;但是,在 EventData 的方法GetBodyStreamGetBody w/serializerGetBodyGetBytes中没有关于此效果的文档。

我想这应该被记录下来,或者更正,因为目前它在一个单独的线程中是一个令人不快的惊喜。

0 投票
1 回答
2064 浏览

c# - 如何确定 EventData 的序列化大小以进行批处理?

在 Azure EventHubClient的文档中,有两种 发送一批数据的方法,每种方法都有下面的注释,如果被忽略,则会抛出MessageSizeExceededException

您应该确保 eventDataList 的总序列化大小小于一次事件数据传输的大小限制,默认为 256k。

编程指南中存在类似的警告

如何IEnumerable<EventData> eventDataList确定的序列化大小?

假设您不询问 EventData ,传递给每个EventData的字节大小很容易确定。但是,EventData 的序列化形式可能包括示例中使用的分区键用户属性

目前,我唯一的选择似乎是对批量大小保守。

0 投票
1 回答
74 浏览

azure - 无法在巴西南部地区创建活动中心

实际上,我无法在巴西南部地区创建服务总线 - 事件中心,但出现错误:无法创建事件中心“XYZ”。没有进一步的信息。

我所有的其他服务都运行良好,完全没有错误。我唯一的问题是事件中心的创建。

谢谢。