Azure服务总线队列避免在环境中读取消息

本文关键字:环境 读取 消息 服务 总线 队列 Azure | 更新日期: 2023-09-27 18:19:55

问题描述:我的开发环境服务总线消息填充到我的UAT或生产队列中,消息在这些环境中处理。。

总结一下我的系统:我们有一个活动管理系统,可以向用户发送电子邮件。。

我们有一个worker角色,它读取输入数据并填充服务总线队列中的Message。

他们是另一个工作人员角色,负责读取此消息、处理并向用户发送电子邮件。。

我的问题是,当我们调试时,一些开发人员没有检查正确的消息队列设置,而是在UAT环境队列中填充消息。这导致向真实用户发送电子邮件。。

所以我正在寻找一种方法或策略,在那里我们有一些验证,扣除这些不需要的消息,而不是处理它

我确信我们应该有适当的流程来检查这些配置设置,但希望自动化这些验证。。

Azure服务总线队列避免在环境中读取消息

在问题评论中,GauravMantri提出,每个环境都应该有不同的服务总线帐户,听起来像是这样,但问题是所有这些帐户的凭据(或SAS令牌)都在配置文件中。开发人员没有注意在配置文件中设置要使用的帐户,因此您最终会从Dev.填充产品系统

在过去,我看到过通过更改部署过程来解决这个问题,以便将配置文件作为部署过程的一部分进行修改(希望是自动化的),这也是Gaurav建议的。卷展栏脚本将加载配置文件,找到需要不同的连接字符串或特定值,并将其替换为用于实际到达生产/UAT系统的字符串。实际凭据通常存储在只有Ops人员才能访问的安全位置(因此也存储在部署脚本服务帐户)。通过这种方式,源代码管理中的文件根本没有实际的生产凭据。通过只将凭据交到Ops人员手中,这大大减少了谁可以访问这些信息。当然,这也意味着开发人员不应该远程访问生产服务器,在那里他们可以偷看它

通过将其融入部署过程,您不必担心。我强烈建议将其自动化,这样操作人员也不必记住它。开发人员永远不会"忘记"设置正确的值,因为源代码管理中的唯一值是开发环境(或者测试)。

在非常小的商店中,开发人员真正了解生产环境证书可能是有意义的,特别是如果它们是系统的一线支持;但我仍然会将它们从源代码管理中删除,然后使用它们的开发人员必须做出有意识的决定