2012-10-25 47 views
0

我使用的是ActiveMQ的连接器骡子 - 经纪人的ClientID配置

<jms:activemq-connector name="Active_MQ_1" brokerURL="${amq.broker.url.1}" eagerConsumer="true" numberOfConsumers="3" dynamicNotification="true" validateConnections="true" clientId="mule-server-01" doc:name="Active MQ"> 
<reconnect count="5" frequency="3000" blocking="false"/> 
</jms:activemq-connector> 

现在,如果你看到“的clientId”属性上面目前我已经得到了硬编码。我们正在2台服务器上部署该应用程序,并且为了生产部署,我必须手动将其更改为相应的机器名称。

有没有办法让我可以使用一些SYS_ENV或者一些像$ HOSTNAME这样的宏,它一旦被部署就会被机器名自动替换?

仅供参考 - 此客户端ID也很有用,可以在ActiveMQ队列上看到消费者。

感谢

+0

你在骡子独立运行你的应用程序? – genjosanzo

+0

嗨。是的,我正在独立运行Mule。但我有2台服务器,我部署相同的应用程序,通过ActiveMQ消息代理的弹性和负载均衡 – Soumya

回答

1

使用您用于brokerURL属性相同的属性解析机制,即。 Spring的属性解析器。

它允许你做这样的事情:

  • 提供了一个系统属性的值,这样你就可以在命令行通过。
  • 用可选配置文件覆盖默认值。

这给你足够的选项来适应你的生产环境实践。

+0

感谢David。所以我可以定义一个实际上是系统变量的属性?因为这只在部署时才会生效,而不是在生成阶段生效,因此它可以提取机器名称。有什么系统变量或宏我可以使用你知道的方式吗?类似$ HostName等。再次感谢 – Soumya

+0

没有包含主机名的标准Java系统属性(请参阅此处的列表:http://docs.oracle.com/javase/6/docs/api/index.html?java/lang /System.html)。您必须将系统属性添加到您为Mule使用的任何启动命令中,并使用与您的shell环境相关的任何值来获取值。 –