250.26. 初期状態の関数の使用
Camel 2.14.1 から利用可能
Properties コンポーネントには、追加設定なしで以下の機能が含まれます。
-
env
: OS 環境変数からプロパティーを検索する関数 -
sys
- Java JVM システムプロパティーからプロパティーを検索する関数 -
service
- サービス命名規則を使用して OS 環境変数からプロパティーを検索する機能 -
service.name
- Camel 2.16 .1: ホスト名の部分のみを返すサービス命名規則を使用して、OS 環境変数からプロパティーを検索する関数 -
service.port
- Camel 2.16 .1: ポートの部分のみを返すサービス命名規則を使用して、OS 環境変数からプロパティーを検索する関数
これらの関数は、環境からの値の検索を容易にすることを目的としています。そのまま使えるように、そのまま使用することができますが、以下のように簡単に使用できます。
<camelContext xmlns="http://camel.apache.org/schema/blueprint"> <route> <from uri="direct:start"/> <to uri="{`{env:SOMENAME}`}"/> <to uri="{`{sys:MyJvmPropertyName}`}"/> </route> </camelContext>
デフォルト値を使用することもできます。そのため、プロパティーが存在しない場合はデフォルト値を定義できます。ここでのデフォルト値は log:foo
、log:bar
です。
<camelContext xmlns="http://camel.apache.org/schema/blueprint"> <route> <from uri="direct:start"/> <to uri="{`{env:SOMENAME:log:foo}`}"/> <to uri="{`{sys:MyJvmPropertyName:log:bar}`}"/> </route> </camelContext>
サービス関数は、サービス命名の idiom を使用して OS 環境変数で定義されるサービスを検索し、hostname: port
を使用してサービスの場所を参照します。
- NAME_SERVICE_HOST
- NAME_SERVICE_PORT
つまり、サービスはプレフィックスとして _SERVICE_HOST
および _SERVICE_PORT
を使用します。サービスの名前が FOO である場合は、OS 環境変数を以下のように設定する必要があります。
export $FOO_SERVICE_HOST=myserver export $FOO_SERVICE_PORT=8888
たとえば、FOO サービスがリモート HTTP サービスである場合、Camel エンドポイント URI でサービスを参照し、 HTTP コンポーネントを使用して HTTP 呼び出しを行うことができます。
<camelContext xmlns="http://camel.apache.org/schema/blueprint"> <route> <from uri="direct:start"/> <to uri="http://{`{service:FOO}`}/myapp"/> </route> </camelContext>
また、サービスが定義されていない場合(ローカルホストでサービスを呼び出すなど)、ユニットテスト用にデフォルト値を使用できます。
<camelContext xmlns="http://camel.apache.org/schema/blueprint"> <route> <from uri="direct:start"/> <to uri="http://{`{service:FOO:localhost:8080}`}/myapp"/> </route> </camelContext>