我有两个Azure AppService槽--试运行和生产--每个槽都从同一个Azure EventHub实例拉取消息.

当只有一个插槽处于活动状态时,一切都会按预期运行.然而,如果两个插槽都处于活动状态,它们似乎会竞争相同的消息,并且状态会在两个插槽之间不可预测地共享.因此,试运行会有一些信息,生产也会有其他信息.这会导致意想不到和不受欢迎的行为.

例如,给定消息ABC,当前似乎发生的情况是:

Staging: A, C
Production: B

我想要的是:

Staging: A, B, C
Production: A, B, C

如何配置Azure事件中心以实现所需的处理? 对于其他上下文,我使用.NET/C#和Azure.Messaging.EventHubs.Processor nuget package.

推荐答案

所以,您正在寻找一种解决方案,其中两个插槽都处理来自Event Hub的相同消息?如果是这样,您的解决方案是每个插槽使用不同的Consumer Group:

[..]它使多个消费应用程序能够以各自的偏移量以自己的速度独立读取事件中心中的相同流数据.[..]

看一下this code example,其中显示了如何配置处理器以使用特定的消费者组.

Csharp相关问答推荐

ASP.NET Core -是否可以对所有最小API端点应用过滤器?

如何在C#中使用正则表达式抓取用逗号分隔的两个单词?

Thad.Sept()vs Task.Delay().Wait()

使用C#HttpClient以多部分形式数据发送带有非ASCII文件名的文件的问题

TCPClient阅读流

如何在C#中实现非抛出`MinBy`?

UWP应用程序try 将打包的本机.exe文件加载为C#程序集

HttpClient 415不支持的媒体类型错误

Lambda表达式如何与隐式强制转换一起工作?

对于PowerShell中的ConvertTo-SecureString方法,Microsoft如何将初始化向量添加到AES加密中的安全字符串?

当空判断结果赋给变量时,为什么会出现可能空异常警告的解引用?

如何让游戏对象在切换场景时被销毁,但在开始新游戏时重新锁定

将C#类导入到PowerShell

在同一个捕获中可以有多种类型的异常吗?

Xamarin.Forms-如何创建可 Select 的显示alert 或弹出窗口?

使DefaultIfEmpty返回空

获取应用程序版本信息时出现奇怪信息

SqlException:无法打开数据库.升级到Dotnet 8后-数据库兼容性版本-非EFCore兼容性级别

我想我必须手动使用res1(字符串形式的PowerShell哈希表)

.NET6最小API:操作.MapGet之后的响应