首页 文章

Azure - 将事件中心消耗到DocumentDB(而不是存储帐户)

提问于
浏览
0

我在Azure上运行了两个服务 . 一个Event Hub和一个CosmosDB/DocumentDB数据库 . 我的目标是使用WebApp服务将两者连接起来,以便在事件中心上获取的所有内容都被消耗并正确存储在数据库中 .

我浏览了Quick Starts和事件中心和CosmosDB的教程,我无法弄清楚两者的连线方式 .

我知道如何与DocumentDB Build 连接,我知道如何使用事件中心的数据,但我无法做到这两点 . 这是交易:

要创建一个事件中心处理器主机,我只找到了以下构造函数

public EventProcessorHost(string eventHubPath, string consumerGroupName, string eventHubConnectionString, string storageConnectionString, string leaseContainerName)

storageConnectionString 是官方教程中名为 StorageAccountNameStorageAccountKey 的两个字符串的组合 .

那么's actually my problem, Storage Account is another service available on Azure. I' ve已经创建了一个用于测试目的,它工作得很好,但是, I need to store everything on a DocumentDB CosmosDB database .

我不排除需要通过存储帐户的可能性,但如果是这样,你能告诉我为什么吗?

非常感谢你 .

1 回答

  • 2

    事件中心处理器需要Azure存储的连接信息以进行租赁管理和检查指向 . 实际上,这意味着如果您有多个处理器实例一起运行,那么找出谁正在从哪个事件中心读取分区的所有艰苦工作都是完全由您管理的 .

    EventProcessor类非常通用 . 您只需将其子类化,然后实现 public override Task HandleEventData(IEnumerable<EventData> data) . 在这种方法中,您可以自由地将EventData写入Cosmos,或者根据事件中心发出的消息做任何您心愿的事情 . 例如:

    class CosmosEventHubProcessor : EventProcessor
    {
        private DocumentClient _documentClient;
    
        public CosmosEventHubProcessor()
        {
            // Initialize DocumentClient
        }
    
        public override Task HandleEventData(IEnumerable<EventData> data)
        {
            // Write data to Cosmos using DocumentClient
        }
    
    }
    

相关问题