264.26. 使用开箱即用的功能


可从 Camel 2.14.1 开始

Properties 组件包括以下功能开箱即用

  • env - 从操作系统环境变量中查找属性的功能
  • sys - 从 Java JVM 系统属性查找属性的功能
  • service - 使用服务命名 idiom 从 OS 环境变量查找属性的功能
  • service.name - Camel 2.16.1: 使用服务命名 idiom 仅返回主机名部分,从 OS 环境变量查找属性的功能
  • service.port - Camel 2.16.1: 利用服务命名 idiom 返回端口部分从 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:foolog: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 环境变量定义的服务,以使用 主机名 : 端口引用服务位置。

  • 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>
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.