小编cac*_*sar的帖子

Azure 的 EventProcessorHost 何时调用 IEventProcessor.ProcessEventsAsync?

我正在为 Azure EventHub 编写一个工作程序,我希望在EventProcessorHost之上构建;但是,我在一般 文档或 API 文档中找不到一些可能相关的详细信息。

EventProcessorHost何时调用 IEventProcessor ProcessEventsAsync ?

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

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

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

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

在进行CloseAsync调用后是否还会进行 ProcessEventsAsync 调用(我假设不会,但没有找到)?是否会使用从 ProcessEventsAsync 返回的未完成的任务来完成?

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

azure azure-sdk-.net azure-eventhub

5
推荐指数
1
解决办法
1668
查看次数

Azure .NET SDK的EventHubClient实例方法是线程安全的吗?

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

"此类型的任何公共静态(在Visual Basic中为Shared)成员都是线程安全的.任何实例成员都不保证是线程安全的."

在我最期望的线程安全 四种 发送 方法中,没有关于线程安全的其他文档.我是否相信发送方法不是线程安全的,那么每次我希望发送消息时,我最终都会创建一个新的EventHubClient实例.由于除非采取了步骤,否则显然会重用底层tcp连接,这可能不会产生太多开销.分区发件人也会出现类似的问题,但是如果有一个异步方法来创建一个,他们可能会有自己的AMQP连接.

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

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

azure azure-sdk-.net azure-eventhub

4
推荐指数
1
解决办法
1304
查看次数

Azure EventHub - 如何删除事件?

总之,我很感激你的帮助,因为我目前被困!

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

Receiver项目中的示例:

foreach (EventData eventData in messages)
{
        string data = Encoding.UTF8.GetString(eventData.GetBytes());

        Console.WriteLine(string.Format("Message received.  Partition: '{0}', Data: '{1}'",
                context.Lease.PartitionId, data));
}
Run Code Online (Sandbox Code Playgroud)

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

任何回复将不胜感激.我们已经被指示使用EventHub而不是原因,这不是一个选择问题.

c# asynchronous azure azure-eventhub

1
推荐指数
1
解决办法
4200
查看次数

标签 统计

azure ×3

azure-eventhub ×3

azure-sdk-.net ×2

asynchronous ×1

c# ×1