【问题标题】:Azure Service Bus Queue Avoid Message being read across enviromentAzure 服务总线队列避免跨环境读取消息
【发布时间】:2015-10-29 12:21:50
【问题描述】:

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

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

我们有一个工作角色,它读取输入数据并将消息填充到服务总线队列中。

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

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

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

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

【问题讨论】:

  • 理想情况下,您应该为每个环境拥有不同的服务总线帐户。
  • 是的..但问题出在应用程序配置上..人们没有在错误的队列中检查和填充消息..
  • 你可以使用配置文件转换之类的东西。这样,您的调试应用程序将从适当的配置文件中选择设置。
  • 是的,我认为该选项,但想看看我们是否有任何不同的方式来实现它..

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


【解决方案1】:

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

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

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

在非常小的商店中,开发人员实际了解生产环境凭据可能是有意义的,尤其是当它们是系统的第一线支持时;但我仍然会将它们从源代码控制中删除,然后使用它们的开发人员必须做出有意识的决定。

【讨论】:

  • 谢谢 Mike..是的,我们是小公司,我们没有单独的 Ops 团队来处理部署..但我肯定会考虑从源代码控制中删除生产凭据...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-22
  • 1970-01-01
  • 2014-11-03
  • 2017-11-01
相关资源
最近更新 更多