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