2.6. 添加全局端点、数据格式或 Bean
概述
有些路由依赖于全局端点、全局数据格式或全局 Bean 提供的共享配置。您可以使用路由编辑器的 Configuration 选项卡在项目的路由上下文文件中添加全局元素。
在路由上下文文件中添加全局元素:
- 在路由编辑器中打开路由上下文文件。
在路由编辑器的底部,单击 Configuration 选项卡以显示全局配置(如果存在)。
单击 Add 以打开 Create a new global element 对话框。
这些选项是:
- endpoint iwl-mvapichsee “添加全局端点”一节。
- 数据格式 iwl-busyboxsee “添加全局数据格式”一节。
- bean waits-INFRAsee “添加全局 bean”一节.
添加全局端点
在 Create a new global element 对话框中,选择 Endpoint 并点 OK 打开 Select component 对话框。
注意默认情况下,会打开 Select component 对话框,并启用了 Show only palette components 选项。要查看所有可用的组件,请取消选中这个选项。
注意Grouped by category 选项根据类型对组件进行分组。
在 Select component 对话框中,滚动浏览 Camel 组件列表以查找并选择您要添加到上下文文件的组件,然后在 Id 字段中输入 ID。
在本例中,选择了 JMS 组件,
myJMS
是 Id 值。点 Finish。
现在,您可以根据需要在 Properties 视图中设置属性。
工具自动填充 Id,使用您在 [globalEndptSelect] 中的组件
Id
字段中输入的值。在本例中,Camel 从组件的 schema (本例中为jms:
)构建uri
(必需字段),但您必须指定 destinationName 和 destinationType 以完成组件的 uri。注意对于 JMS 组件,目的地类型默认为
队列
。在 Destination Name (必需字段)中输入了一个值前,在 Details 页中输入了一个值之前,这个默认值不会出现在uri
字段中。- 要完成组件的 uri,请单击 Advanced。
在 Destination Name 字段中输入目标端点的名称(例如
FOO.BAR
)。在 Destination Type 字段中,输入端点目的地的类型(例如,队列
、主题
、temp:queue
或temp:topic
)。Properties 视图的 Details 和 Advanced 选项卡提供对可用于配置特定组件的所有属性的访问。
单击 Consumer (advanced) 选项卡。
启用属性 Eager Loading Of Properties 和 Expose Listener Session。
在路由编辑器中,切换到 Source 选项卡,以查看添加到上下文文件(本例中为配置的 JMS 端点)到第一个 route 元素之前的代码。
-
完成后,通过在菜单栏中选择 File
Save 来保存您的更改。
添加全局数据格式
在 Create a new global element 对话框中,选择 Data Format 并单击 OK 以打开 Create a global Data Format 对话框。
数据格式默认为
avro
,这是可用列表顶部的格式。-
打开 Data Format 下拉菜单,然后选择您想要的格式,如
xmljson
。 在 Id 字段中输入格式的名称,如 myDataFormat)。
点 Finish。
在 Properties 视图中,根据您的项目设置属性值,例如:
在路由编辑器中,点 Source 选项卡查看添加到上下文文件中的工具的代码。在本例中,配置的 xmljson 数据格式在第一个 route 元素之前。
-
完成后,通过在菜单栏中选择 File
Save 来保存您的更改。
添加全局 bean
全局 Bean 启用路由外 Bean 定义,可以从路由的任意位置引用。当您将 Bean 组件从面板复制到路由时,您可以在 Properties 视图的 Ref 下拉菜单中找到定义的全局 Bean。选择您要引用 Bean 组件的全局 bean。
添加全局 bean 元素:
在 Create a new global element 窗口中,选择 Bean 并点 OK 打开 Bean Definition 对话框。
- 在 Id 字段中输入全局 bean 的 ID,如 TransformBean。该 ID 在配置中必须是唯一的。
识别 bean 类或工厂 bean。
要指定 factory bean,您必须已经添加了指定了 factory 类的另一个全局 bean。然后,您可以选择该全局 bean 将其声明为全局 bean 工厂。bean 工厂类的一个实例将在运行时中。其他全局 Bean 可以调用该类上的工厂方法,以创建自己的其他类实例。
要填写 Class 字段,请执行以下操作之一:
- 在项目或引用的项目中输入类的名称。
- 点 … 进入并选择一个项目或引用项目中的类。
- 单击 + 以定义一个新的 bean 类,并将它添加为全局 bean。
如果您要添加的 bean 需要一个或多个参数,在 Constructor Arguments 部分中,每个参数:
- 点击 Add。
-
(可选)在 Type 字段中输入参数的类型。默认值为
java.lang.String
。 - 在 Value 字段中,输入参数的值。
- 点击 确定。
(可选)指定全局 bean 访问的一个或多个属性。在 Bean Properties 部分中,对每个属性执行以下操作:
- 点击 Add。
- 在 Name 字段中输入属性的名称。
- 在 Value 字段中输入 属性的值。
- 点击 确定。
点 Finish 将全局 bean 添加到配置中。您指定的全局 bean ID 会出现在 Configuration 选项卡中,例如:
切换到 Source 选项卡,以查看添加到上下文文件中的工具的
bean
元素。例如:点 Configuration 选项卡返回到全局元素列表,并选择全局 bean 在 Properties 视图中显示其标准属性,例如:
注意要查看或编辑添加全局 Bean 时指定的属性,请在 Configuration 选项卡中选择 bean,然后点 Edit。
根据需要设置全局 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 执行的处理时要调用哪些。
-
dependent-on 是一个字符串,可用于识别必须在这个全局 Bean 之前创建的 bean。指定依赖于 bean 的 ID (名称)。例如,如果您要添加
-
完成后,通过在菜单栏中选择 File
Save 来保存您的更改。
删除全局元素
无论删除之前添加到路由上下文中的端点、数据格式或 bean,这个过程都相同。
您不能执行撤销操作来删除全局元素。如果您意外删除要在配置中保留的全局元素,您可能可以通过关闭上下文文件来撤销删除,而无需保存它。如果这不可行,则重新添加无意删除的全局元素。
在 Configuration 选项卡中,选择您要删除的全局元素。
例如,假设您要删除添加到 “添加全局数据格式”一节 中的数据格式
myDataFormat
:点击 Delete。
全局元素
myDataFormat
从 Configuration 选项卡中 消失。切换到 Source 选项卡,以检查工具是否从路由上下文中删除了 XML 代码。
-
完成后,通过在菜单栏中选择 File
Save 来保存您的更改。
编辑全局元素
无论修改端点的属性、数据格式还是添加到路由上下文中的 bean 属性,这个过程都是一样的。
通常,您不想更改全局元素的 ID。如果全局元素已在正在运行的路由中使用,更改 ID 可能会破坏对全局元素的引用。
在 Configuration 选项卡中,选择您要编辑的全局元素。
例如,要编辑添加到 “添加全局端点”一节 中的端点
myJMS
,请选择它:点 Edit。
在 Properties 视图中,根据需要修改元素的属性。
例如,打开 Advanced
Consumer 选项卡,并将 Concurrent Consumers 的值改为 2
:在路由编辑器中,点 Source 选项卡,检查工具已将属性
concurrentConsumers=2
添加到路由上下文中:-
完成后,通过在菜单栏中选择 File
Save 来保存您的更改。