如何将传入消息映射到 Azure Eventhub 中的使用者组

Posted

技术标签:

【中文标题】如何将传入消息映射到 Azure Eventhub 中的使用者组【英文标题】:How to map incoming messages to a consumer group in Azure Eventhub 【发布时间】:2020-04-24 04:46:31 【问题描述】:

我正在尝试使用 Azure EventHub 来处理消息,只要我有一个发送者和一个消费者,它就可以正常工作。

我只是让我的消费者听一个特定的消费者组,一切都很好

现在的问题是,当我发送不同类型的消息并希望由不同的消费者组处理时,我不知道如何做到这一点

我正在这样创建我的发件人

private static EventHubProducerClient eventHubClient = new EventHubProducerClient(eventHubConnectionString, eventHubName);

但我没有办法告诉它应该发送到哪个消费者组,它简单地发送到集线器本身并且该集线器有多个资源组

我如何决定哪个消费者组收到这条消息?

我在谷歌上搜索了几个小时,却没有找到将来自特定发件人的输入消息“映射”到特定输出消费者组的方法

【问题讨论】:

资源组?你是说消费者群体吗? 是的,抱歉我编辑了问题 实际上,如果您知道什么是消费者群体,您就无法做到这一点。消息发送到分区,分区包含在每个消费者组中。 好的,但同样的问题仍然存在,我如何知道消息发送到哪个分区以及消费者组在哪个分区? 【参考方案1】:

您无法指定将哪条消息发送到指定的消费者组。消息发送到分区,分区都包含在每个消费者组中,您可以查看这个doc中的图表。截图如下:

现在问你一个问题:当我发送不同类型的消息时,我 想要由不同的消费者群体处理我不明白这怎么可能 完成。

作为一种解决方法,当您发送消息时,您可以为每条消息specify a property。当从消费者组读取这些消息时,您也可以使用该属性来确定是要处理还是放弃。

希望对你有帮助。

【讨论】:

我不想要一个我很乐意发送到不同分区的解决方法,但是如何?我找不到任何体面的文档来说明如何执行此操作,如何指定要发送到的分区?以及如何指定消费者组在哪个分区? 1.如何指定要发送到的分区?为此,您可以在发送数据时指定一个 partition_key,但它只是确保所有具有相同 partition_key 的数据在同一个分区中,但不能指定使用哪个分区。 2.如何指定消费者组在哪个分区?你应该知道一件事,每个 Consumer 组包含所有的分区。 这太令人困惑了,这意味着每个事件中心名称空间只能处理一种类型的消息,因为它们需要由相同类型的接收者处理? @MattDouhan,没有。事件中心命名空间不等于事件中心实例。事件中心命名空间可以包含更多事件中心实例,消费者组连接到一个事件中心实例。希望它清除。 啊,好吧,所以在同一个命名空间中,我为每种类型的消息添加了一个 HUB,所以不同的消费者组更多的是处理相同消息的不同类型的处理,而不是处理不同类型的消息,这样说的有道理

以上是关于如何将传入消息映射到 Azure Eventhub 中的使用者组的主要内容,如果未能解决你的问题,请参考以下文章

如何编写将部分传入消息传递给服务总线队列的 Azure HTTP 触发器函数?

使用流分析作业查询从 EventHub 中过滤 Azure 事件

如何从应用服务向 Azure 上的 EventHub 发送日志

如何每 5 分钟使用 StreamAnalitics 计算当天的所有 azure EventHub 事件?

Azure事件中心-“ ErrorCode”:“禁止”,“ ErrorMessage”:“ SubCode =40300。EventHub类型的最大资源数已达到或超过]]

具有事件中心输入流位置的 Azure 流分析