我为NServiceBus消费者配置了Octopus。直到最近,只有一个队列要消耗。现在我们试图将不同类型的消息放在不同的队列中变得聪明。现在我们已经把它分成了3个队列,但是这个数字将来可能会增加。
现在的计划是在3个不同的文件夹中以3个不同的名称安装NSB消费者服务3次。 3个部署中唯一的区别是app.config
设置:
<add key="NsbConsumeQueue" value="RedQueue" />
因此,我们将提供Red
服务,Green
服务和Blue
服务,并且每个服务都将配置为使用相应的队列。
在Octopus中部署这3项服务的最佳方法是什么?我的理想是在某处宣布某种服务清单,例如。
ServiceName QueueName
----------- ---------
RedService RedQueue
GreenService GreenQueue
BlueService BlueQueue
循环遍历这些服务,将每个服务部署在自己的文件夹中,并将NsbConsumeQueue
中app.config
的值替换为适当的值。我不认为这可以使用变量来完成,这会留下PowerShell。
知道如何编写可以执行此操作的PS脚本吗?
答案 0 :(得分:1)
在我以前的雇主,我们使用以下脚本从Octopus部署: http://www.layerstack.net/blog/posts/deploying-nservicebus-with-octopus-deploy
将两个Powershell脚本添加到包含NServiceBus主机的项目中。确保override the host identifier或ServicePulse会发疯,因为每个部署都有自己的文件夹,因为八达通。
但正如评论中所提到的,请确保您出于正确的原因拆分端点。我们还拥有至少4项服务,但这是因为我们有一个合理的分离。例如,我们有一个财务服务,所有财务信息都会发送到该服务。以及所有销售服务所在的销售服务。这遵循DDD有界上下文原则并且有理由。我希望你的服务实际上不叫红色,绿色和蓝色! :)
答案 1 :(得分:1)
不应该需要Powershell。 Octopus中的变量可以作为部署过程中的一个步骤。因此,您可以有3个步骤,每个服务一个,队列名称的3个变量,每个步骤都限定为其中一个步骤。
您还可以为服务名称添加变量,并在流程步骤设置中使用这些变量。这样你就可以从变量页面看到服务名称和队列名称。