在 Octopus 中,如何在 NServiceBus 实例上进行变量替换-mapping.xml
In Octopus, how to do variable substitution on an NServiceBus instance-mapping.xml
在 C# 项目中使用 NServiceBus 时,一个名为 instance-mapping.xml 的文件用于指定每个队列托管在哪台机器上。像这样:
<?xml version="1.0" encoding="utf-8" ?>
<endpoints>
<endpoint name="QueueName1">
<instance machine="localhost"/>
</endpoint>
<endpoint name="QueueName2">
<instance machine="localhost"/>
</endpoint>
</endpoints>
在 Octopus 中,如何对这样的文件进行变量替换?因此,QueueName1 中的 "machine" 属性更改为 "server1",而 QueueName2 中的属性更改为 "server2"。像这样:
<?xml version="1.0" encoding="utf-8" ?>
<endpoints>
<endpoint name="QueueName1">
<instance machine="server1"/>
</endpoint>
<endpoint name="QueueName2">
<instance machine="server2"/>
</endpoint>
</endpoints>
Octopus 具有内置功能,可以对例如 key/value 进行简单的替换。应用程序设置和连接字符串。但是上面的文件有点复杂,因为封闭元素标识了键。
我可能过于简化了您的问题,但为了得到所需的 instance-mapping.xml
我会使用配置转换。 instance-mappings.transform.xml
文件示例为:
<?xml version="1.0" encoding="utf-8" ?>
<endpoints xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<endpoint name="QueueName1" xdt:Locator="Match(name)">
<instance machine="server1" xdt:Transform="SetAttributes" />
</endpoint>
<endpoint name="QueueName2" xdt:Locator="Match(name)">
<instance machine="server2" xdt:Transform="SetAttributes" />
</endpoint>
</endpoints>
然后在 Octopus 中添加一个配置转换 instance-mapping.transform.xml => instance-mapping.xml
。
如果您希望将机器值配置为八达通变量,您可以添加一个变量替换。指定变量:machine[QueueName1]
值为 machine1
和 machine[QueueName2]
值为 machine2
并修改转换文件:
<?xml version="1.0" encoding="utf-8" ?>
<endpoints xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<endpoint name="QueueName1" xdt:Locator="Match(name)">
<instance machine="#{machine[QueueName1]}" xdt:Transform="SetAttributes" />
</endpoint>
<endpoint name="QueueName2" xdt:Locator="Match(name)">
<instance machine="#{machine[QueueName2]}" xdt:Transform="SetAttributes" />
</endpoint>
</endpoints>
如果在开发过程中添加本地端点时遇到困难,而这在其他环境中没有意义,您可以使用 Octopus 作为端点的真实来源。为此,请将每个端点的变量添加到您的 Octopus 项目中:
然后您可以根据 Octopus 中的值在转换文件中设置端点:
<?xml version="1.0" encoding="utf-8" ?>
<endpoints xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" xdt:Transform="Replace">
#{each e in endpoint}
<endpoint name="#{e.Name}">
<instance machine="#{e.Machine}"/>
</endpoint>
#{/each}
</endpoints>
给定示例变量和转换文件,在 Octopus 中使用变量替换和配置转换,您最终将得到所需的 instance-mapping.xml
:
<?xml version="1.0" encoding="utf-8"?>
<endpoints>
<endpoint name="QueueName1">
<instance machine="Machine1"/>
</endpoint>
<endpoint name="QueueName2">
<instance machine="Machine2"/>
</endpoint>
</endpoints>
希望对您有所帮助。
在 C# 项目中使用 NServiceBus 时,一个名为 instance-mapping.xml 的文件用于指定每个队列托管在哪台机器上。像这样:
<?xml version="1.0" encoding="utf-8" ?>
<endpoints>
<endpoint name="QueueName1">
<instance machine="localhost"/>
</endpoint>
<endpoint name="QueueName2">
<instance machine="localhost"/>
</endpoint>
</endpoints>
在 Octopus 中,如何对这样的文件进行变量替换?因此,QueueName1 中的 "machine" 属性更改为 "server1",而 QueueName2 中的属性更改为 "server2"。像这样:
<?xml version="1.0" encoding="utf-8" ?>
<endpoints>
<endpoint name="QueueName1">
<instance machine="server1"/>
</endpoint>
<endpoint name="QueueName2">
<instance machine="server2"/>
</endpoint>
</endpoints>
Octopus 具有内置功能,可以对例如 key/value 进行简单的替换。应用程序设置和连接字符串。但是上面的文件有点复杂,因为封闭元素标识了键。
我可能过于简化了您的问题,但为了得到所需的 instance-mapping.xml
我会使用配置转换。 instance-mappings.transform.xml
文件示例为:
<?xml version="1.0" encoding="utf-8" ?>
<endpoints xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<endpoint name="QueueName1" xdt:Locator="Match(name)">
<instance machine="server1" xdt:Transform="SetAttributes" />
</endpoint>
<endpoint name="QueueName2" xdt:Locator="Match(name)">
<instance machine="server2" xdt:Transform="SetAttributes" />
</endpoint>
</endpoints>
然后在 Octopus 中添加一个配置转换 instance-mapping.transform.xml => instance-mapping.xml
。
如果您希望将机器值配置为八达通变量,您可以添加一个变量替换。指定变量:machine[QueueName1]
值为 machine1
和 machine[QueueName2]
值为 machine2
并修改转换文件:
<?xml version="1.0" encoding="utf-8" ?>
<endpoints xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<endpoint name="QueueName1" xdt:Locator="Match(name)">
<instance machine="#{machine[QueueName1]}" xdt:Transform="SetAttributes" />
</endpoint>
<endpoint name="QueueName2" xdt:Locator="Match(name)">
<instance machine="#{machine[QueueName2]}" xdt:Transform="SetAttributes" />
</endpoint>
</endpoints>
如果在开发过程中添加本地端点时遇到困难,而这在其他环境中没有意义,您可以使用 Octopus 作为端点的真实来源。为此,请将每个端点的变量添加到您的 Octopus 项目中:
然后您可以根据 Octopus 中的值在转换文件中设置端点:
<?xml version="1.0" encoding="utf-8" ?>
<endpoints xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" xdt:Transform="Replace">
#{each e in endpoint}
<endpoint name="#{e.Name}">
<instance machine="#{e.Machine}"/>
</endpoint>
#{/each}
</endpoints>
给定示例变量和转换文件,在 Octopus 中使用变量替换和配置转换,您最终将得到所需的 instance-mapping.xml
:
<?xml version="1.0" encoding="utf-8"?>
<endpoints>
<endpoint name="QueueName1">
<instance machine="Machine1"/>
</endpoint>
<endpoint name="QueueName2">
<instance machine="Machine2"/>
</endpoint>
</endpoints>
希望对您有所帮助。