2.6. 添加全局端点、数据格式或 Bean

概述

有些路由依赖于全局端点、全局数据格式或全局 Bean 提供的共享配置。您可以使用路由编辑器的 Configuration 选项卡在项目的路由上下文文件中添加全局元素。

在路由上下文文件中添加全局元素:

  1. 在路由编辑器中打开路由上下文文件。
  2. 在路由编辑器的底部,单击 Configuration 选项卡以显示全局配置(如果存在)。

    ConfigurationView
  3. 单击 Add 以打开 Create a new global element 对话框。

    CnfigsVAddButton

    这些选项是:

添加全局端点

  1. Create a new global element 对话框中,选择 Endpoint 并点 OK 打开 Select component 对话框。

    CnfigsVSelectCamComponent1
    注意

    默认情况下,会打开 Select component 对话框,并启用了 Show only palette components 选项。要查看所有可用的组件,请取消选中这个选项。

    注意

    Grouped by category 选项根据类型对组件进行分组。

    CnfigsVSelectCamComponentGrouped
  2. Select component 对话框中,滚动浏览 Camel 组件列表以查找并选择您要添加到上下文文件的组件,然后在 Id 字段中输入 ID。

    CnfigsVCamComponentSelected

    在本例中,选择了 JMS 组件,myJMSId 值。

  3. Finish

    CnfigsVmyEndptAdded2

    现在,您可以根据需要在 Properties 视图中设置属性。

    工具自动填充 Id,使用您在 [globalEndptSelect] 中的组件 Id 字段中输入的值。在本例中,Camel 从组件的 schema (本例中为 jms:)构建 uri (必需字段),但您必须指定 destinationNamedestinationType 以完成组件的 uri

    注意

    对于 JMS 组件,目的地类型默认为 队列。在 Destination Name (必需字段)中输入了一个值前,在 Details 页中输入了一个值之前,这个默认值不会出现在 uri 字段中。

  4. 要完成组件的 uri,请单击 Advanced
  5. Destination Name 字段中输入目标端点的名称(例如 FOO.BAR)。在 Destination Type 字段中,输入端点目的地的类型(例如,队列主题temp:queuetemp:topic)。

    JMSCompAdvanPathProp

    Properties 视图的 DetailsAdvanced 选项卡提供对可用于配置特定组件的所有属性的访问。

  6. 单击 Consumer (advanced) 选项卡。

    JMSCompConsumerAdvanProps2

    启用属性 Eager Loading Of PropertiesExpose Listener Session

  7. 在路由编辑器中,切换到 Source 选项卡,以查看添加到上下文文件(本例中为配置的 JMS 端点)到第一个 route 元素之前的代码。

    CnfigsEndptSourceView
  8. 完成后,通过在菜单栏中选择 FileSave 来保存您的更改。

添加全局数据格式

  1. Create a new global element 对话框中,选择 Data Format 并单击 OK 以打开 Create a global Data Format 对话框。

    CnfigsVCreateGlobalDF1

    数据格式默认为 avro,这是可用列表顶部的格式。

  2. 打开 Data Format 下拉菜单,然后选择您想要的格式,如 xmljson
  3. Id 字段中输入格式的名称,如 myDataFormat)。

    CnfigsVCreateGlobalDF2
  4. Finish

    CnfigsVEditGlobalDFprops1
  5. Properties 视图中,根据您的项目设置属性值,例如:

    CnfigsVEditGlobalDFprops2
  6. 在路由编辑器中,点 Source 选项卡查看添加到上下文文件中的工具的代码。在本例中,配置的 xmljson 数据格式在第一个 route 元素之前。

    CnfigsVGlobalDFSourceV
  7. 完成后,通过在菜单栏中选择 FileSave 来保存您的更改。

添加全局 bean

全局 Bean 启用路由外 Bean 定义,可以从路由的任意位置引用。当您将 Bean 组件从面板复制到路由时,您可以在 Properties 视图的 Ref 下拉菜单中找到定义的全局 Bean。选择您要引用 Bean 组件的全局 bean。

添加全局 bean 元素:

  1. Create a new global element 窗口中,选择 Bean 并点 OK 打开 Bean Definition 对话框。

    CnfigsVCreateGlobalBean1
  2. Id 字段中输入全局 bean 的 ID,如 TransformBean。该 ID 在配置中必须是唯一的。
  3. 识别 bean 类或工厂 bean。

    要指定 factory bean,您必须已经添加了指定了 factory 类的另一个全局 bean。然后,您可以选择该全局 bean 将其声明为全局 bean 工厂。bean 工厂类的一个实例将在运行时中。其他全局 Bean 可以调用该类上的工厂方法,以创建自己的其他类实例。

    要填写 Class 字段,请执行以下操作之一:

    • 在项目或引用的项目中输入类的名称。
    • …​ 进入并选择一个项目或引用项目中的类。
    • 单击 + 以定义一个新的 bean 类,并将它添加为全局 bean。
  4. 如果您要添加的 bean 需要一个或多个参数,在 Constructor Arguments 部分中,每个参数:

    1. 点击 Add
    2. (可选)在 Type 字段中输入参数的类型。默认值为 java.lang.String
    3. Value 字段中,输入参数的值。
    4. 点击 确定
  5. (可选)指定全局 bean 访问的一个或多个属性。在 Bean Properties 部分中,对每个属性执行以下操作:

    1. 点击 Add
    2. Name 字段中输入属性的名称。
    3. Value 字段中输入 属性的值。
    4. 点击 确定
  6. Finish 将全局 bean 添加到配置中。您指定的全局 bean ID 会出现在 Configuration 选项卡中,例如:

    CnfigsBeanInList
  7. 切换到 Source 选项卡,以查看添加到上下文文件中的工具的 bean 元素。例如:

    CnfigsBeanSourceV
  8. Configuration 选项卡返回到全局元素列表,并选择全局 bean 在 Properties 视图中显示其标准属性,例如:

    CnfigsBeanProperties
    注意

    要查看或编辑添加全局 Bean 时指定的属性,请在 Configuration 选项卡中选择 bean,然后点 Edit

  9. 根据需要设置全局 bean 属性:

    • dependent-on 是一个字符串,可用于识别必须在这个全局 Bean 之前创建的 bean。指定依赖于 bean 的 ID (名称)。例如,如果您要添加 TransformBean,并将 Depends-on 设置为 ChangeCaseBean,则必须创建 ChangeCaseBean,然后可以创建 TransformBean。当 Bean 被销毁时 ,首先销毁 Bean
    • factory-method 仅在全局 bean 是工厂类时才有用。在这种情况下,指定或选择在引用 bean 时调用的静态工厂方法。
    • 范围单例原型。默认 单例 表明 Camel 每次调用 bean 时使用相同的 bean 实例。当您希望 Camel 在每次调用 bean 时创建 Bean 的新实例时,指定 原型
    • init -method 允许您指定或选择在引用 bean 时调用 bean 的 init () 方法。
    • destroy-method 可让您指定或选择 bean 的 destory 方法在完成由 bean 执行的处理时要调用哪些。
  10. 完成后,通过在菜单栏中选择 FileSave 来保存您的更改。

删除全局元素

无论删除之前添加到路由上下文中的端点、数据格式或 bean,这个过程都相同。

注意

您不能执行撤销操作来删除全局元素。如果您意外删除要在配置中保留的全局元素,您可能可以通过关闭上下文文件来撤销删除,而无需保存它。如果这不可行,则重新添加无意删除的全局元素。

  1. Configuration 选项卡中,选择您要删除的全局元素。

    例如,假设您要删除添加到 “添加全局数据格式”一节 中的数据格式 myDataFormat

    CnfigsVDFSelectDelete
  2. 点击 Delete

    全局元素 myDataFormat 从 Configuration 选项卡中 消失。

  3. 切换到 Source 选项卡,以检查工具是否从路由上下文中删除了 XML 代码。

    CnfigsDelDFSourceV
  4. 完成后,通过在菜单栏中选择 FileSave 来保存您的更改。

编辑全局元素

无论修改端点的属性、数据格式还是添加到路由上下文中的 bean 属性,这个过程都是一样的。

通常,您不想更改全局元素的 ID。如果全局元素已在正在运行的路由中使用,更改 ID 可能会破坏对全局元素的引用。

  1. Configuration 选项卡中,选择您要编辑的全局元素。

    例如,要编辑添加到 “添加全局端点”一节 中的端点 myJMS,请选择它:

    CnfigsVEndptEditSelect
  2. Edit

    CnfigsVEndptClickEdit

    Properties 视图中,根据需要修改元素的属性。

  3. 例如,打开 AdvancedConsumer 选项卡,并将 Concurrent Consumers 的值改为 2

    CnfigsEditEndpntConcurConsume2
  4. 在路由编辑器中,点 Source 选项卡,检查工具已将属性 concurrentConsumers=2 添加到路由上下文中:

    CnfigsVEndptEditSourceV
  5. 完成后,通过在菜单栏中选择 FileSave 来保存您的更改。