在部署基于 MassTransit 的应用程序时创建 RabbitMQ 工件的推荐方法
Recommended Approach to Creating RabbitMQ Artifacts when deploying app based on MassTransit
我希望在我当前的应用程序中开始使用 MassTransit 和 RabbitMQ 作为消息传递提供程序的功能。我想知道关于可能编写 MassTransit 所需的 RabbitMQ 工件创建脚本的推荐做法是什么作为我的安装脚本的一部分?我担心的是,如果系统没有按正确的顺序启动,消息可能会在我的消费者启动并开始订阅之前发布,因此可能会丢失一些消息。
根据我们的经验,我们会在部署任何启动应用程序(例如 public API、计划的触发器等)之前部署服务,这些应用程序会将消息发送到任何服务入口点。我们这样做是为了确保所有环境设置、配置等都符合预期,并验证 RabbitMQ、集群等的配置。
我强烈推荐这种方法,因为它让操作人员有时间审查和理解新架构,因为您不会立即解决任何编程问题,而是可以专注于设置和配置。
我们还使用 Fooidity
来部署代码并保持新行为不可用,直到它被启用以供客户使用。通过使用功能切换,任何 public 用户都不可能点击端点,直到它准备好用于生产。
我们从不尝试编写环境脚本并预先配置队列、交换等,因为它只是搞砸了,我们最终重置虚拟主机让MT设置正确。我不是说不可能,只是让MT配置一切更容易。
我希望在我当前的应用程序中开始使用 MassTransit 和 RabbitMQ 作为消息传递提供程序的功能。我想知道关于可能编写 MassTransit 所需的 RabbitMQ 工件创建脚本的推荐做法是什么作为我的安装脚本的一部分?我担心的是,如果系统没有按正确的顺序启动,消息可能会在我的消费者启动并开始订阅之前发布,因此可能会丢失一些消息。
根据我们的经验,我们会在部署任何启动应用程序(例如 public API、计划的触发器等)之前部署服务,这些应用程序会将消息发送到任何服务入口点。我们这样做是为了确保所有环境设置、配置等都符合预期,并验证 RabbitMQ、集群等的配置。
我强烈推荐这种方法,因为它让操作人员有时间审查和理解新架构,因为您不会立即解决任何编程问题,而是可以专注于设置和配置。
我们还使用 Fooidity
来部署代码并保持新行为不可用,直到它被启用以供客户使用。通过使用功能切换,任何 public 用户都不可能点击端点,直到它准备好用于生产。
我们从不尝试编写环境脚本并预先配置队列、交换等,因为它只是搞砸了,我们最终重置虚拟主机让MT设置正确。我不是说不可能,只是让MT配置一切更容易。