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

时间:2015-10-29 12:21:51

标签: c# .net azure azureservicebus azure-servicebus-queues

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

总结我的系统:我们有一个广告系列管理系统,可以将电子邮件发送给用户。

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

他们是另一个职员角色,负责阅读此消息,处理并向用户发送电子邮件..

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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