2012-10-25 91 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環境相關的任何值來獲取值。 –