为啥 Azure 事件中心订阅者不起作用?

Posted

技术标签:

【中文标题】为啥 Azure 事件中心订阅者不起作用?【英文标题】:Why Azure event hub subscriber not working?为什么 Azure 事件中心订阅者不起作用? 【发布时间】:2022-01-18 11:48:27 【问题描述】:

我正在实现一个 azure 事件中心订阅者,它能够成功连接,但它没有收到事件中心命名空间中特定事件中心的消息。但对于同一命名空间中的其他事件中心,它按预期工作。日志中没有错误。有没有办法找出问题的根本原因?

我能够成功地发布具有相同配置的消息。

发布者和订阅者在同一台机器上运行。

我已经在 Dapr 中实现了发布者和订阅者。

Dapr 中的发布者和订阅者日志完全相同,所以我认为这是存储帐户的问题。

添加更多信息:

我已使用不同的存储帐户尝试了我的应用程序,它按预期工作。那么问题是什么?我该如何解决?我想使用我的旧存储帐户。

【问题讨论】:

可以分享一些sn-ps的代码吗?你让它为另一个事件中心实例工作的事实,那么它一定与连接字符串或相关的东西有关 - 是否抛出任何异常? @AnandSowmithiran 也不例外。我已经多次验证连接字符串是正确的 可以分享一下代码 sn-p 吗?它是否连接到正确的事件中心消费者组?您是否使用与检查点存储相同的存储帐户?如果是这样,您可以尝试使用新创建的 blob 存储吗? @Jdresc 是的,它连接到正确的事件群和消费者组。检查点商店是什么意思? 【参考方案1】:

所有问题

您的问题中包含多个问题,可以单独测试。 (例如,事件中心、dapr、存储帐户等。)对这些问题有详细的了解至关重要,因此我会尝试对它们进行一一测试。

事件中心问题

您可以通过在本地创建简单的“hello world”客户端并根据您的生产场景重现它们之间的关系来单独测试您的事件中心流程。

例如

尝试连接到只有一个发布者和一个消费者的事件中心, 尝试使用一个发布者将同一消息发布到多个事件中心,看看您是否可以将它们与单独的消费者一起使用, ...等

根据您的评论,我将列出 2 个示例问题场景:

问题 1:“我可以访问命名空间中的一个事件中心,但无法访问同一命名空间中的另一个事件中心。”

您可以为事件中心命名空间的范围配置“共享访问策略”,这将应用于该命名空间中的所有事件中心。 您还可以为事件中心的范围配置相同的策略,这些策略将仅应用于该单个中心。

在尝试使用代码中的连接字符串时,请确保在 Azure 门户中使用适当的范围。

问题 2:“我可以将消息从客户端发布到事件中心,但不能使用同一客户端、同一台计算机、具有相同连接字符串的消息。”

您可以配置无限数量的“共享访问策略”,每个策略都有一个自定义密钥和连接字符串。

您还可以为每个策略配置客户端访问权限,从以下 3 个选项中进行选择:

管理 发送 听着

确保使用适当的客户端访问权限。如果您想使用相同的确切连接字符串进行发送和侦听,请将“发送”和“侦听”访问权限添加到该策略。 (您也可以使用不同的策略和连接字符串来发送和侦听...等)

【讨论】:

@viveknuna 我修改了答案,希望能敲响警钟 您的回答只是建议尝试明显的场景,而不是回答问题@bradib0y 您的问题是什么?我试图回答这个问题:"I am implementing an azure event hub subscriber which is successfully able to connect but it's not receiving the message for a particular event hub in an event hub namespace. But it's working as expected for the other event hub in the same namespace. there is no error in the logs. Is there any way to find out the root cause of the issue?" - 您评论的其他部分只是提到了 dapr、存储帐户 ...等。这些组件之间的连接是完全独立的问题,必须这样处理

以上是关于为啥 Azure 事件中心订阅者不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

为啥数组的 Observable 和订阅者不起作用?

连接属性在 Azure ServiceBus 订阅触发的函数中不起作用

为啥我的 Absinthe GraphQL 订阅不起作用?

为啥这个简单的 SQL 代码在 Azure Databricks 中不起作用?

socket.io 连接事件不起作用,为啥?

为啥在尝试垂直对齐我的 UILabel 时 sizeToFit 不起作用?它只是停留在中心