首页 文章

Azure Service Bus Queue避免在环境中读取消息

提问于
浏览
0

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

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

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

他们是另一个工作者角色,它读取此消息,处理并向用户发送电子邮件 .

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

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

我确信我们应该有适当的流程来检查这些配置设置,但是想要自动化这些验证 .

1 回答

  • 2

    在问题评论中,GauravMantri声明你应该为每个环境设置不同的服务总线帐户,这听起来像你做的,但问题是所有这些帐户的凭据(或SAS令牌)都在配置文件中 . 开发人员没有注意在配置文件中设置了哪个帐户,因此您最终会从Dev填充prod系统 .

    在过去,我已经看到通过更改部署过程解决了这个问题,以便配置文件作为部署过程的一部分进行修改(希望自动化),这也是Gaurav建议的内容 . rollout脚本将加载配置文件,找到需要不同的连接字符串或特定值,并将其替换为用于实际到达 生产环境 / UAT系统的字符串 . 实际凭证通常存储在只有Ops人员可以访问的安全位置(以及部署脚本服务帐户) . 这样,源代码管理中的文件永远不会拥有实际的 生产环境 凭据 . 通过将凭证仅交给Ops人员,它可以大大减少谁有权访问该信息 . 当然,这也意味着开发人员不应该远程访问 生产环境 服务器,然后他们可以只是窥视它 .

    通过将其融入部署过程,您不必担心它 . 我强烈建议让它自动化,以便Ops人们不必记住它 . 开发人员永远不会“忘记”设置正确的值,因为源代码控制中的唯一值是开发环境(或者可能是测试) .

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

相关问题