工具用户指南

Red Hat Fuse 7.11

在 CodeReady Studio 中使用 Fuse 工具开发和部署 Fuse 应用程序

摘要

本指南介绍了如何使用红帽 Fuse 工具,它提供设计、开发、测试和调试集成应用程序时提高您的生产力的开发人员工具。

前言

Red Hat Fuse 工具是一个基于 Eclipse 的 IDE,简化了在红帽 CodeReady Studio 中开发集成应用程序的过程。Fuse 工具提供一组开发人员工具,专门用于使用:

  • Red Hat Fuse
  • Red Hat JBoss EAP
  • Apache Camel
  • Apache CXF
  • Apache Karaf
  • Spring Boot

本指南提供有关如何使用 Fuse 工具进行以下操作的信息:

  • 为您的应用程序创建一个项目,包括 Maven 依赖项
  • 连接并配置企业集成模式来构建路由
  • 浏览端点和路由
  • 将消息拖放到正在运行的路由中
  • 通过 JMX 浏览和视觉化运行时进程
  • 调试本地运行的 Camel 上下文和路由
  • 通过以下方法测试您的应用程序:

    • 在 Apache Camel 路由中创建并使用 JUnit 测试问题单
    • 使用 JMX 分析正在运行的组件
    • 通过 Apache Camel 路由跟踪消息
  • 部署应用程序

对于新用户,工具教程 提供了步骤说明,了解如何创建、调试、测试和部署示例 Camel 应用程序。

使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看我们的 CTO Chris Wright 信息

部分 I. 开发应用程序

第 1 章 创建新的 Fuse 集成项目

概述

创建新的 Fuse 集成项目涉及以下主要步骤:

配置完项目后,工具会下载所有必要的 Maven 依赖项,并创建运行和发布项目所需的 POM 文件。

开始前

在创建新的 Fuse 集成项目前,您应该有以下信息:

  • 您的目标运行时环境:OpenShift 或 Fuse 独立 Fuse (在 Karaf 上 Spring Boot、Fuse 或 EAP 上的 Fuse)
  • Camel 版本(与工具默认使用的其它版本)

指定项目名称和工作区

要创建新的 Fuse 集成项目,请按照以下步骤执行:

  1. 选择 NewProjectRed Hat FuseFuse Integration Project 以打开 New Fuse Integration Project 向导。

    向导会打开,并在 Location 窗格中选择 Use default workspace location 选项。

    nfpProjectName1
  2. Project Name 中,输入新项目的名称,如 MySampleProject
  3. 指定要在其中存储项目的数据的工作区位置。

    • 要使用默认的工作区,请保持 Use default workspace location 选项启用。
    • 要使用备选位置,可清除 Use default workspace location 选项,并在 Path 字段中指定位置。

      点击 BrowseButton 快速查找并选择备用工作区。

  4. Next 打开 Select a Target Environment 页面。

配置项目部署环境

当您创建新项目时,您可以指定项目的目标部署环境,以便项目在运行时具有需要的资源。您必须选择一个部署平台和 Camel 版本。另外,您可以指定运行时配置。

Select a Target Environment 页面打开:

  1. 选择是否要在 Kubernetes/OpenShift 上部署项目还是在 单机 平台上部署。

    NFPcamelVersion

    如果您在部署平台选择 Kubernetes/OpenShift,则会自动选择 Sprint 引导 运行时,您可以跳至第 3 步。

  2. 如果您为部署平台选择 Standalone

    1. 选择目标运行时环境:

      • Spring Boot
      • Karaf/Fuse on Karaf
      • EAP 上的 WildFly/Fuse
    2. 对于 Karaf 和 EAP 独立运行时环境,请为运行时配置选择以下选项之一:

  3. 新项目窗格的 Select the Camel 版本中,接受与运行时关联的默认 Camel 版本,或更改默认设置:

    • 从下拉列表中选择 Camel 版本。Fuse 工具支持列出的产品版本。
    • 如果要尝试使用非产品化版本(不支持),输入不同的 Camel 版本。

      您可以点击 Verify 按钮来检查工具是否可以访问指定的版本。如果没有,在 Select a Target Runtime 页面标头中会显示类似以下示例的通知:

      验证 Camel
      注意

      创建、配置和保存项目后,您可以更改 Camel 版本。请参阅 第 11 章 更改 Camel 版本

  4. 选择运行时环境和作为新 Fuse Integration 项目的 Camel 版本后,点 Next 打开向导的 Advanced Project Setup 页面,然后按照 “选择项目模板”一节 中的步骤操作。

创建新目标运行时(可选)

对于 Karaf 和 EAP 独立运行时环境,您可选择性地从 New Fuse Integration Project 向导创建新的运行时配置。

  1. 在向导的 Select a Target Runtime 页面中,点 New 打开 New server runtime 环境 页面:

    新的服务器运行时环境
  2. 展开 红帽 JBoss 中间件 文件夹,然后选择红帽 Fuse 运行时环境。

    取消选中 Create a new local server 选项。当您准备好发布项目时,您可以稍后创建本地服务器(请参阅 第 27.1 节 “添加服务器”)。

    注意

    如果您检查 Create a new local server 选项,则 New Fuse Integration Project 向导会指导您执行额外的步骤来定义和配置 Fuse 服务器运行时(如 第 27.1 节 “添加服务器”所述)。然后,在项目构建时,它还会将服务器运行时添加到 Fuse Integration 视角中的 Servers 视图。

  3. Next 打开服务器的 New Server Runtime Environment 页面:

    nfpRuntimeDefJBF1
  4. 指定服务器运行时的名称、Home Directory执行环境

    • 名称 TOKEN-youAccept the default 或输入运行时环境的新名称。
    • Home Directory ALLOW-关闭Click Browse 按钮来查找并选择服务器运行时的安装目录。

      注意

      如果计算机上尚未安装该服务器,您可以点击 Download and install runtime 链接安装该服务器,然后按照站点的下载说明进行安装。根据网站,您可能需要提供有效的凭证,然后才能继续下载过程。

    • Runtime JRE:执行 Environment BUFFER-logforwardingAccept the default,或从下拉列表中选择另一个 JavaSE 版本。

      如果列表中没有显示您想要的版本,点 Environments 按钮并从该列表中选择版本。您选择的 JRE 版本必须安装在您的机器上。

      注意

      Fuse 7.x 需要 JRE 版本 1.8。

    • Runtime JRE:Alternate JRE - 如果您的项目需要不同的 Java 版本,您可以使用这个选项。
  5. Finish 返回 New Fuse Integration Project 向导的 Select a Target Runtme 页面:

    新配置的目标运行时会出现在 Target Runtime 窗格的下拉菜单中,运行时支持的 Camel 版本会出现在 Camel Version 窗格中,灰显。

    创建 Fuse 集成项目后,可以更改 Camel 版本。请参阅 第 11 章 更改 Camel 版本

  6. Next 为项目指定一个模板,如 “选择项目模板”一节 所述。

选择项目模板

Advanced Project Setup 页面提供了一个模板列表,您可以使用这些模板作为新项目的起点。模板基于常见用例,提供示例代码和数据,从而快速启动。可用模板列表取决于您在上一页中选择的运行时环境。选择模板以在右侧窗格中查看其描述。

  • 对于 OpenShift 上的 Fuse,有一个模板来演示如何使用 Spring XML 配置文件在 Spring Boot 中配置 Camel 路由。此模板会创建一个 Fuse 集成项目,并且需要比 2.18.1.redhat-000012 的 Camel 版本。

    此模板会创建一个在 OpenShift 服务器上运行的项目,它仅支持 Spring DSL。有关使用此模板的详情,请参考 第 6 章 OpenShift 中的 Fuse 入门

    nfpTemplateOpenShift
  • 对于 WildflyFuse,EAP 上提供了 一个单一模板,提供调用 bean 服务的示例 Camel 路由,以表示"Hello"。此模板会创建一个在红帽 EAP 服务器上运行的项目,它仅支持 Spring DSL。

    nfpTemplateEAP
  • 对于 KarafKaraf 上的 Fuse,您可以选择模板。您可以创建一个空项目,它会基于三个支持的域特定语言(DSL)创建框架 Camel 上下文路由文件,或者您可以使用预定义的模板,每个模板都基于常见用例。单个模板可能不支持所有 DSL 选项。

    注意

    对于 Java DSL,工具会生成 CamelRoute.java 文件,您可以在工具的 Java 编辑器中进行编辑,但它不会生成其图形图表示法。

    • 内容基于路由器 方式的 Camel 路由提供了示例 Camel 路由,该路由从特定位置读取文件并根据消息内容将它们路由到不同的输出文件夹。

      此模板会创建一个在红帽 Fuse 服务器上运行的项目,它支持所有三个 DSL。

    • CXF 代码是第一个 由 CXF Web 服务调用启动的示例 Camel 路由。

      此模板会创建一个在红帽 Fuse 服务器上运行的项目,它仅支持 Spring 和 Java DSL。

      nfpTemplateKaraf
      1. 从列表中选择一个模板。
      2. Finish

        该工具开始构建项目,并将它添加到 Project Explorer 视图中。

        如果 Fuse 集成 透视图尚未打开,工具会询问您是否现在要切换到它:

        OpenAssociatedPerspective
      3. 点击 YesFuse Integration 视角中打开新项目:

        nfpTemplateProjectOpen

        该项目会出现在 Project Explorer 视图中。默认情况下,该项目包含 Apache Camel 上下文(XML)文件。

      4. 点 canvas 底部的 Source 选项卡查看生成的 Camel 上下文文件:

        nfpTemplateCBRsource
注意

如果要将另一个新的 Camel 上下文文件添加到项目中,请参阅 第 10 章 创建新 Camel XML 文件

当您构建使用 CXF 的项目时,您可能希望构建过程自动在 Java 文件上运行,以生成 WSDL 文件。为此,请在项目的 .pom 文件中配置 java2ws Maven 插件。请参阅: Apache CXF Development Guide, Maven 工具参考, java2ws.

解决 Maven 依赖项错误

在创建新的 Fuse 集成项目后,您可能会遇到 Maven 依赖项错误。

虽然它可能在其他时间发生,但当您在进程完成前取消项目构建时,通常也会发生。以这种方式中断进程通常可防止所有项目的依赖项从 Maven 存储库下载,这可能需要一些时间。

通常您可以通过更新 Maven 依赖项来解决这些依赖关系错误,如下所示:

  1. Project Explorer 视图中,右键单击 root 项目以打开上下文菜单。
  2. 选择 MavenUpdate Project
  3. Update Maven Project 向导中:

    • 如果向导列表中显示多个要更新的项目,请选择您要更新的项目。
    • 点击 Force Update of Snapshots/Releases 选项启用它。
  4. 点击 OK

    在工作台的右侧,您可以查看进度状态栏,因为缺少的依赖关系是从 Maven 存储库下载的。

第 2 章 在路由编辑器中编辑路由上下文

The following sections describe how to edit a routing context.

2.1. 在路由中添加模式

路由由一系列连接模式组成,在将节点放置到 Route 容器 节点 内的 canva 后,就会称为节点。完整的路由通常由一个起始端点、一个处理节点以及一个或多个目标端点组成的字符串组成。

当您在 canvas 上的 Route 容器中添加一个模式时,该模式采用指示其类型节点的颜色:

  • blueLogForwarder-ttySRoute 容器,对应于上下文文件中的路由元素和其他容器节点,如何 和包含完成其逻辑的其他 EIP
  • 输入数据进入路由的 greenPERCENT-mediationActionConsumer 端点
  • orange the- !EIP,该路由、转换、进程或控制传输路由的数据流
  • 输出数据退出路由的 purple 注销Producer 端点

流程

将模式添加到路由中:

  1. 面板上,找到您要添加到路由的模式。
  2. 使用以下方法之一:

    • 单击面板中的模式 然后在 canvas 中单击路由容器。
    • 将模式拖到目标 Route 容器中,并将其丢弃。

      或者,您可以在没有传出连接的现有节点上添加模式,也可以在两个节点之间有连接现有连接,以便工具自动连接涉及的所有节点之间的连接。

      工具会检查生成的连接是否有效,然后允许或阻止您在目标中添加模式。对于有效连接,工具的行为取决于目标是节点还是连接:

      • 对于 现有节点,工具会将新节点添加到目标节点的传出端(根据 编辑器首选项如何设置),并自动连接它们
      • 对于 现有连接,工具会在两个连接节点间插入新节点,并自动连接三个节点之间的连接
  3. 另外,您可以手动连接两个节点:

    1. 在 canvas 上的 Route 容器中,选择源节点来显示其连接器箭头。
    2. 将源节点的连接器箭头( ConnectorArrow )拖到目标节点,并释放鼠标按钮来丢弃连接器。

      注意

      并非所有节点都可以连接。当您尝试将源节点连接到无效的目标节点时,该工具会显示附加到鼠标光标的 unconfigured co gray 符号,且连接器无法坚持目标节点。

  4. 在 Route 容器内添加模式后,您可以将其拖到路由容器内的不同位置,或将其拖到 canva 上的另一个路由容器,只要它可以建立有效的连接。您还可以重定位已经连接的现有节点,只要移动可以建立另一个有效连接。

    要查看演示如何重新组成端点的简短视频,请单击此处

  5. 选择 FileSave。无论是否完成,工具都会将路由保存在上下文文件中。

新模式会出现在 Route 容器中,变为所选节点。Properties 视图显示您可以编辑的新节点属性列表。

更改布局方向

当您将一个节点连接到另一个节点时,工具会根据路由编辑器的布局首选项更新布局。默认为 Down

要访问路由编辑器的布局首选项:

  • 在 Linux 和 Windows 机器上,选择 WindowsPreferencesFuse ToolingEditor选择图表编辑器的布局方向

2.2. 配置模式

概述

大多数模式都需要一些明确的配置。例如,端点需要明确输入的 URI

工具的 Properties 视图提供了列出特定模式支持的所有配置详情的表单。Properties 视图还提供以下方便功能:

  • 验证所有需要的属性是否具有值
  • 验证提供的值是否为属性的正确数据类型
  • 带有固定值的属性的下拉列表
  • 下拉列表填充 Apache Camel Spring 配置中可用的 bean 参考

流程

配置模式:

  1. 在 canvas 上,选择您要配置的节点。

    Properties 视图列出了您要编辑的所有所选节点属性。对于 EIP,Details 选项卡列出了所有模式的属性。对于 组件 提取器的组件,Details 选项卡列出了常规属性和需要值的用户,高级 选项卡则根据功能列出其他属性。

    Documentation 选项卡描述其属性的模式及其每个属性。

  2. 编辑 Properties 视图中的字段以配置节点。
  3. 完成后,通过从菜单栏中选择 FileSave 来保存您的工作。

2.3. 从路由中删除模式

概述

在开发和测试路由时,您可能需要删除一个或多个路由节点。节点的 garbageIcon 图标可以更轻松地完成。当您从 canva 中删除节点时,它与路由里其他节点的所有连接也会被删除,并将该节点从上下文文件中的对应路由元素中删除。

注意

您还可以通过打开其上下文菜单并选择 删除 来删除节点。

流程

从路由中删除节点:

  1. 选择您要删除的节点。
  2. 点击其 garbageIcon 图标。
  3. 当要求您删除这个元素时,请单击 Yes

节点及其所有连接从 canvas 中删除,并将该节点从上下文文件中的对应路由元素中删除。

2.4. 在路由上下文中添加路由

概述

XML 上下文文件中的 camelContext 元素创建路由上下文。camelContext 元素可以包含一个或多个路由,每个路由都作为 Route 容器节点显示,映射到生成的 camelContext 元素中的路由元素。

流程

将另一个路由添加到 camelContext 中:

  1. Design 选项卡中,执行以下操作之一:

    • Palette 'sRouting drawer 中的 Route 模式,然后点您要放置路由的 canvas。
    • 从面板的Routing drawer 拖动 Route 模式,并将它放到 canvas 中。

      Properties 视图显示您可以编辑的新路由属性列表。

  2. Properties 视图中,输入:

    • 路由 Id 字段中新路由的 ID (如 Route2)

      注意

      该工具自动将 ID 分配给 EIP 和 canva 上丢弃的组件模式。您可以将这些自动生成的 ID 替换为您自己的,以区分项目中的路由。

    • Description 字段中的路由描述
    • 任何其它属性的值,根据需要。必要属性可通过星号(*)指定。
  3. 在菜单栏中,选择 FileSave 以保存您对路由上下文文件所做的更改。
  4. 要在多个路由间切换,请点击 Project Explorer 视图中的项目 Camel 上下文 文件夹下的条目,选择您要在 canvas 上显示的路由。

    routeEntriesProjectExplorer
  5. 要显示上下文中的所有路由,作为空格允许,单击 Project Explorer 视图中的上下文文件条目。
  6. 要在将路由添加到 canvas 时查看工具生成的代码,请点击 Source 选项卡。

    注意

    您还可以在 Source 选项卡中添加路由,将 <route/> 元素添加到 camelContext 元素中的现有列表中。

2.5. 删除路由

概述

在某些情况下,您需要从路由上下文中删除整个路由。路由容器的 garbageIcon 图标可以更轻松地完成。当您删除路由时,路由容器内的所有节点都也会被删除,上下文文件中的对应路由元素会被删除。

注意

您还可以使用 Route 容器的上下文菜单并选择 Remove 来删除路由。

重要

您无法撤销此操作。

流程

删除路由:

  1. 如果路由上下文包含多个路由,首先在 Project Explorer 视图中选择您要删除的路由。

    routeEntriesProjectExplorer
  2. 在 canvas 上,点击 Route 容器 garbageIcon 图标。

    routeDelete
  3. 当要求您删除这个元素时,请单击 Yes

路由从 canvas、上下文文件以及 Project Explorer 视图中删除。

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

概述

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

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

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

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

    CnfigsVAddButton

    这些选项是:

添加全局端点

  1. Create a new global element 对话框中,选择 Endpoint,再单击 OK 以打开 Select component 对话框。

    CnfigsVSelectCamComponent1
    注意

    默认情况下,选择组件 对话框将启用 Show only palette components 选项。要查看所有可用组件,请取消选中此选项。

    注意

    类别选择分组时按类型对 组件进行分组。

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

    CnfigsVCamComponentSelected

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

  3. Finish

    CnfigsVmyEndptAdded2

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

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

    注意

    对于 JMS 组件,目标类型默认为 队列。在 Destination Name 中输入一个值(必需字段)前,在 Details 页面中的 uri 字段中会显示这个默认值。

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

    JMSCompAdvanPathProp

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

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

    JMSCompConsumerAdvanProps2

    启用属性 加载 Properties 和 Expose Listener Session

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

    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 数据格式是第一个路由元素的前面。

    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。

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

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

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

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

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

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

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

    CnfigsBeanProperties
    注意

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

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

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

删除全局元素

无论删除端点、数据格式还是之前添加到路由上下文中,步骤都相同。

注意

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

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

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

    CnfigsVDFSelectDelete
  2. Delete

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

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

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

编辑全局元素

无论您在路由上下文中添加了端点的属性、数据格式或 bean,程序都相同。

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

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

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

    CnfigsVEndptEditSelect
  2. Edit

    CnfigsVEndptClickEdit

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

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

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

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

2.7. 配置路由编辑器

概述

使用 Fuse 首选项设置,您可以为路由编辑器的行为和用户界面指定选项:

  • 用于企业集成模式(EIP)中的表达式的默认语言。
  • 在创建路由时在 Design canva 上进行模式流的方向(到右或向下)
  • Design Canvas 是否会在 canvas 背景中显示网格覆盖。
  • 在 Design canva 上标记节点的方法

流程

配置路由编辑器:

  1. 打开 Editor 首选项窗口:

    • 在 Linux 和 Windows 机器上,选择 WindowsPreferencesFuse ToolingEditor

    PreferencesEditor

  2. 要选择要用于企业集成模式(EIP)组件中表达式的默认语言,请从下拉列表中选择语言。默认值为 Simple
  3. 要指定您要路由编辑器在路由中的模式对齐方向,请选择 DownRight。默认为 Down
  4. 要在 canvas 背景上启用或禁用网格覆盖,请在 Routes Editor 中选中 Show diagram Grid 旁边的复选框。默认为启用
  5. 要在路由编辑器的 Design 选项卡中启用或禁用组件 ID 作为标签,请选中 使用组件标签 的 ID 值 旁边的框。默认为禁用

    如果您选中此选项,并为组件指定首选标签(请参阅第 6 步),则首选标签用于该组件,而不是 ID 值。

  6. 在路由编辑器的 Design 选项卡中将参数用作组件的标签(端点除外,如文件节点):

    1. 首选标签 部分中,点 Add。此时会打开 New Preferred Label 对话框。

      NewPreferredLabel

    2. 选择一个 组件,然后选择 Parameter 以用作组件的标签。
    3. 点击 OK。组件和参数对在 Editor Preferences 窗口中列出。

      PreferredLabelsList

      您可以选择 EditRemove 组件标签。

      注意

      如果您检查了 组件标签选项的使用 ID 值,它适用于所有组件,但 Preferred labels 部分中列出的组件除外。

  7. Apply and Close 将更改应用到 Editor 首选项,并关闭 Preferences 窗口。
注意

您可以通过返回 Editor 首选项对话框并点 Restore Defaults 来随时恢复路由编辑器的原始默认值。

第 3 章 查看并编辑 Rest DSL 组件

Apache Camel 支持多种定义 REST 服务的方法。特别是,Apache Camel 提供了 REST DSL (Domain Specific Language),它是一个简单但强大的 API,可以在任何 REST 组件上分层并提供与 OpenAPI 2.0 规格 集成。OpenAPI (以前称为 Swagger)是一个厂商中立且可移植的 API 服务描述格式。

有关使用 Camel Rest DSL 的详情,请查看 Apache Camel 开发指南中的 "定义 REST 服务"一章。

利用 Fuse 工具,您可以查看并编辑 Camel 上下文文件中的 Rest DSL 组件。

您还可以配置 Fuse 集成项目,将 REST API 公开给 OpenAPI 客户端,如下所述 :https://access.redhat.com/articles/4296981。

3.1. 查看 Rest DSL 组件的图形表示

在图形模式中查看 Camel 上下文文件中的 REST DSL 组件:

  1. 在路由编辑器中打开 Camel 上下文文件。
  2. 单击 REST 选项卡,以查看 Rest DSL 组件。

    RESTtab

    REST Configuration 部分显示这些配置选项:

    • 用于 REST 传输的 Camel 组件 组件。
    • 上下文 Path RWO-NAMESPACE,用于 REST 服务的领先上下文路径。您可以将这个选项用于组件,如 Servlet,使用 context-path 部署 Web 应用程序。
    • 端口 WWN-其中的端口号公开 REST 服务。
    • 绑定模式 baseDomain-IMG JSON 或 XML 格式的绑定模式。可能的值有: off (默认值)、autojsonxmljson_xml
    • 用于公开 REST 服务的主机名。
  3. 点 REST 元素查看 REST Operations 部分中的关联操作(如 GETPOSTPUTDELETE)。
  4. 点 REST 元素或 REST 操作在 Properties 视图中查看其属性。

    RESTproperties

3.2. 在图形视图中编辑 Rest DSL 组件

您可以在 REST 标签页中在项目的 Camel 上下文文件中添加、编辑或删除 REST 元素。

  • 添加新 REST 元素:

    1. REST 元素 部分中,单击 + 按钮。REST 元素添加到 REST 元素 的列表。
    2. Properties 视图中,编辑 REST 元素属性。

      RESTAddElement2
  • 在 REST 元素中添加 REST 操作:

    1. REST 元素 列表中,选择 REST 元素。
    2. REST 操作 部分中,单击 + 按钮。

      此时会打开 Add REST Operation 对话框。

      RESTAddOperation
    3. 指定 IDURI操作类型。(可选)选择 Referenced Route ID
    4. Finish。新操作显示在所选 REST 元素的 REST 操作列表中。
  • 要编辑 REST 元素或操作,请在 REST 选项卡中选择它,然后在 Properties 选项卡中编辑其属性值。
  • 要删除所选的 REST 元素或操作,请单击 x 按钮。

3.3. 查看并编辑 Rest DSL 源代码

您还可以在 Source 选项卡中查看和编辑 Rest DSL 组件:

  1. 在路由编辑器中打开 Camel 上下文文件。
  2. 单击路由编辑器的 Source 选项卡,然后编辑代码。

    RESTsourcetab
  3. (可选)点击 REST 选项卡查看图形视图中的更改。
  4. 要保存您的更改,请选择 FileSave

第 4 章 创建新的 Apache Camel JUnit 测试案例

概述

测试路由的常见方法是使用 JUnit。设计时工具包含一个向导,简化了为路由创建 JUnit 测试案例。向导使用您指定的端点来生成测试的起点代码和配置。

注意

创建 boilerplate JUnit 测试案例后,您需要对其进行修改,以添加特定于您创建或修改的路由的预期和断言,因此测试对路由有效。

前提条件

在创建新的 JUnit 测试案例之前,您需要执行前期任务:

删除和现有的 JUnit 测试案例

  1. Project Explorer 视图中,展开项目的 root 节点,以公开 < root_project>/src/test/java 文件夹。
  2. /src/test/java 文件夹中找到 JUnit 测试案例文件。

    根据项目的 DSL,J JUnit 测试案例文件被命名为 BlueprintXmlTest.javaCamelContextXmlTest.java

  3. 右键单击 JUnit 测试案例 .java 文件以打开上下文菜单,然后选择 Delete

    JUnit 测试案例 .java 文件从 Project Explorer 视图中消失。

    现在,您可以创建一个新的 JUnit 测试案例

创建 并将 src/test/java 文件夹添加到构建路径

  1. Project Explorer 视图中,右键单击项目的 root 以打开上下文菜单。
  2. 选择 NewFolder 以打开 Create a new folder resource 向导。
  3. 在向导的项目树窗格中,展开项目的 root 节点并选择 src 文件夹。

    确保 & lt;project_root>/src 出现在 Enter 或选择父文件夹 字段中。

  4. Folder name 中,输入 /test/java。此文件夹将存储您创建的新 JUnit 测试案例。
  5. Finish

    Project Explorer 视图中,新的 src/test/java 文件夹将显示在 src/main/resources 文件夹下。您可以通过打开上下文菜单并选择 Build Path 来验证此文件夹是否位于类路径中。如果从 Build Path Remove 是菜单选项,您知道 src/test/java 文件夹位于类路径上。

    现在,您可以创建一个新的 JUnit 测试案例

创建 JUnit 测试案例

为您的路由创建新 JUnit 测试案例:

  1. Project Explorer 视图中,选择项目中的路由上下文 .xml 文件。
  2. 右键单击打开上下文菜单,然后选择 NewCamel Test Case 以打开 New Camel JUnit Test Case 向导,如 图 4.1 “新的 Camel JUnit Test Case 向导” 所示。

    图 4.1. 新的 Camel JUnit Test Case 向导

    New Camel JUnit Test Case 向导的条目页面

    另外,您还可以从菜单栏中选择 FileNewOther > & gt; Camel Test Case 以打开向导。

  3. Source 文件夹中,接受测试案例的源代码的默认位置,或者输入其他位置。

    您可以点击 Browse button 搜索位置。

  4. Package 中,接受生成的测试代码的默认软件包名称,或者输入另一个软件包名称。

    您可以点击 Browse button 搜索软件包。

  5. test 下的 Camel XML 文件中,接受包含您要测试的路由的路由上下文文件的默认路径名称,或者输入另一个路径名称。

    您可以点 Browse button 搜索上下文文件。

  6. 名称 中,接受生成的测试类的默认名称,或者输入另一个名称。
  7. 选择您要在生成的代码中包括的方法存根。
  8. 如果要在生成的代码中包含默认生成的注释,请选中 Generate 注释 框。
  9. 点击 Next button 打开 Test Endpoints 页面。例如: 图 4.2 “新的 Camel JUnit 测试案例页面” 显示所选的路由的输入和输出文件端点。

    图 4.2. 新的 Camel JUnit 测试案例页面

    Test Endpoints 页面示例
  10. 可用端点 下,选择您要测试的端点。点击任意所选端点旁边的复选框进行取消选择。
  11. Finish button

    注意

    如有提示,将 JUnit 添加到构建路径中。

测试的工件将添加到您的项目中,并出现在 src/test/java 下的 Project Explorer 视图。在 Java 编辑器中打开实施测试案例的类。

第 5 章 在红帽 Fuse 工具内运行路由

使用该工具运行路由的方法有两种:

5.1. 将路由作为本地 Camel 上下文运行

概述

运行 Apache Camel 路由的最简单方式是作为 本地 Camel 上下文。这个方法可让您直接从 Project Explorer 视图的上下文菜单中启动路由。当您从上下文菜单中选择路由时,工具会自动为您创建运行时配置集。您还可以为运行路由创建自定义运行时配置集。

您的路由会像从命令行直接调用并使用 Apache Camel 的嵌入式 Spring 容器一样运行。您可以通过编辑 runtime 配置集来配置多个运行时参数。

流程

将路由作为本地 Camel 上下文运行:

  1. Project Explorer 视图中,选择路由上下文文件。
  2. 右键单击以打开上下文菜单,然后选择 Run AsLocal Camel Context

    注意

    选择 Local Camel 上下文(不使用测试) 可指示工具在不执行验证测试的情况下运行项目,这可能会更快。

结果

Console 视图显示从运行路由生成的输出。

5.2. 使用 Maven 运行路由

概述

如果包含路由的项目是 Maven 项目,您可以使用 m2e 插件来运行路由。使用这个选项,您可以在路由运行前执行任何 Maven 目标。

流程

使用 Maven 运行路由:

  1. Project Explorer 视图中,选择 项目的根目录。
  2. 右键单击它以打开上下文菜单,然后选择 Run AsMaven build

    1. 第一次使用 Maven 运行项目时,Edit Configuration 并启动 编辑器会打开,以便您可以创建一个 Maven 运行时配置集。

      Maven 标签页中创建运行时配置集:

      1. 确保 Apache Camel 项目的路由目录出现在 Base directory: 字段中。

        例如,在 Linux 中,项目的根目录与 ~/workspace/simple-router 相似。

      2. Goals: 字段中,输入 camel:run

        重要

        如果使用 Java DSL 创建项目,请在 Goals: 字段中输入 exec:java

      3. 单击" 应用 ",然后单击" 运行 "。
    2. 后续 Maven 运行使用此配置集,除非您在运行间进行修改。

结果

Console 视图显示 Maven 运行的输出。

5.3. 使用运行时配置集

Red Hat Fuse 工具将每个项目的运行时环境信息存储在 运行时配置集中。运行时配置集可跟踪此类信息,如要调用的 Maven 目标、要使用的 Java 运行时环境、需要设置的任何系统变量等。个项目可以有多个运行时配置文件。

5.3.1. 编辑本地 Camel 上下文运行时配置集

概述

本地 Camel 上下文 运行时配置文件配置如何将 Apache Camel 调用来执行路由。本地 Camel 上下文运行时配置集存储定义了您的路由的上下文文件的名称、要调用的 主要 名称、传递到 JVM 的命令行选项、要使用的类路径、要使用的类路径、需要设置的任何环境变量以及一些其他信息。

本地 Camel 上下文 运行时配置集的运行时配置编辑器包含以下标签页:

  • Camel Context File WWN-WWNspec 表示新配置的名称以及包含您的路由的路由上下文文件的完整路径。
  • JMX 213-指定 JMX 连接详细信息,包括 JMX URI 和用户名(可选)用于访问它。
  • main WWN-将项目的完全限定名称标识了项目基础目录的完全限定名称,找到基础目录的几个选项,在运行路由前执行所需的任何目标,以及要使用的 Maven 运行时版本。
  • JRE WWN-leasespec 在启动 JVM 时需要使用 JRE 和命令行参数。
  • 刷新 logforwarding-WWNspec 表示 Maven 在运行终止后如何刷新项目的资源文件。
  • environment WWN-WWNspec 表示需要设置的任何环境变量。
  • common WWN-ocpspec 指定如何存储配置集并显示输出。

当 Apache Camel 路由首次作为 本地 Camel 上下文 运行时,红帽 Fuse 工具为路由上下文文件创建一个默认运行时配置文件,不需要编辑。

访问本地 Camel 上下文的运行时配置编辑器

  1. Project Explorer 视图中,选择要编辑或创建自定义运行时配置集的 Camel 上下文文件。
  2. 右键单击它以打开上下文菜单,然后选择 Run AsRun Configuration 来打开 Run Configuration 对话框。
  3. 上下文选择 窗格中,选择 Local Camel Context,然后点击 上下文选择 窗格顶部的 New profile icon
  4. Name 字段中输入运行时配置集的新名称。

图 5.1. 本地 Camel 上下文的运行时配置编辑器

local camel 上下文运行时配置编辑器

设置 camel 上下文文件

Camel 上下文文件 选项卡有一个字段,选择 Camel 上下文文件…​。输入包含路由定义的路由上下文文件的完整路径。

Browse 按钮可以访问 Open Resource 对话框,用于查找目标路由上下文文件。此对话框预先配置了搜索包含 Apache Camel 路由的文件。

更改命令行选项

默认情况下,传递到 JVM 的唯一命令行选项是:

-fa context-file

如果您使用的是自定义主类,您可能需要传递不同的选项。要做到这一点,在 Main 选项卡中点 Add 按钮输入参数的名称和值。您可以点击 Add Parameter 对话框的 Variables…​ 按钮显示您可以选择的变量列表。

要添加或修改 JVM 特定参数,请编辑 JRE 选项卡上的 VM 参数 字段。

更改输出的发送位置

默认情况下,运行路由生成的输出会发送到 Console 视图。但是,您也可以将其重定向到文件。

将输出重定向到文件:

  1. 选择 Common 选项卡。
  2. Standard Input and Output 窗格中,单击 Output File: 字段旁边的复选框,然后输入您要发送输出的文件的路径。

    Workspace 、文件系统Variables 按钮有助于构建输出文件的路径。

5.3.2. 编辑 Maven 运行时配置集

概述

Maven 运行时配置集配置 Maven 如何调用 Apache Camel。Maven 运行时配置集存储了要执行的 Maven 目标、要使用的 Maven 配置集、要使用的 Maven 版本、JRE 要使用的类路径、需要设置的任何环境变量以及一些其他信息。

重要

当使用 Maven 运行 Apache Camel 路由时,您必须为其创建默认运行时配置集。

Fuse 运行时配置集的运行时配置编辑器包含以下标签页:

  • main WWN-将新配置的名称、项目基础目录的完全限定名称、用于定位基础目录的一些选项、在运行路由前需要执行的任何目标,以及要使用的 Maven 运行时版本。
  • JRE WWN-leasespec 在启动 JVM 时需要使用 JRE 和命令行参数。
  • 刷新 logforwarding-WWNspec 表示 Maven 在运行终止后如何刷新项目的资源文件。
  • Source WWN-WWN 指定项目所需的任何额外源的位置。
  • environment WWN-WWNspec 表示需要设置的任何环境变量。
  • common WWN-ocpspec 指定如何存储配置集并显示输出。

访问 Maven 运行时配置编辑器

  1. Project Explorer 视图中,选择要编辑或创建自定义运行时配置集的项目的根目录。
  2. 右键单击它以打开上下文菜单,然后选择 Run AsRun Configuration 来打开 Run Configuration 对话框。
  3. 上下文选择 窗格中,选择 Maven Build,然后点击 上下文选择 窗格顶部的 New profile icon

图 5.2. Maven 的运行时配置编辑器

Maven 运行时配置编辑器

更改 Maven 目标

运行路由时最常使用的目标为 camel:run。它将路由加载到在其自己的 JVM 中运行的 Spring 容器中。

Apache Camel 插件还支持 camel:embedded 目标,用于将 Spring 容器加载到 Maven 使用的同一 JVM 中。这样做的优点在于路由应该更快地引导。

基于 Java DSL 的项目使用 exec:java 目标。

如果您的 POM 包含其他目标,您可以点击 Main 选项卡上的 Maven Runtime 字段旁的 Configure…​ 按钮来更改使用的 Maven 目标。在 Installations 对话框中,编辑 < selected_runtime> 安装字段的全球设置

更改 Maven 的版本

默认情况下,Eclipse 的 Red Hat Fuse 工具使用 m2e,它嵌入在 Eclipse 中。如果要使用不同版本的 Maven 或您的开发机器上安装了更新的版本,您可以从 Main 选项卡上的 Maven Runtime 下拉菜单中选择它。

更改输出的位置

默认情况下,路由执行的输出发送到 Console 视图。但是,您也可以将其重定向到文件。

将输出重定向到文件:

  1. 选择 Common 选项卡。
  2. 单击 Output File: 字段旁边的复选框,然后输入您要发送输出的文件的路径。

    Workspace 、文件系统Variables 按钮有助于构建输出文件的路径。

第 6 章 OpenShift 中的 Fuse 入门

OpenShift 上的 Fuse (自 7.0 起的 Fuse 集成服务的名称)可让您在 OpenShift Container Platform 上部署 Fuse 应用程序。

重要

对于 Fuse 集成项目(Fuse on OpenShift 项目),Fuse 工具需要安装 Red Hat Container Development Kit (CDK) v3。具体步骤请查看 入门指南。除本指南中指定的先决条件外,如果还没有红帽帐户,则需要建立红帽帐户。需要您的红帽用户名和密码来启动 Red Hat Container Development Kit 中提供的虚拟 OpenShift 实例。

您可以通过在 红帽客户门户上 注册,轻松获得帐户。点击白幅右上角的 Account ,然后点击 登录至您的 Red Hat Account 页面的 RH acctRegBut

Fuse 工具可让您使用 s2i 二进制工作流开发和部署 Fuse 集成项目。在此工作流中,工具在本地构建您的项目,将其编译成镜像流,然后将镜像流推送到 OpenShift,在其中构建 Docker 容器。Docker 容器构建后,OpenShift 会在 pod 中部署它。

重要

Fuse 工具只适用于 S2I 二进制文件的工作流,且只适用于基于 Spring Boot 框架的项目。

注意

虽然 Fuse 工具可以部署使用远程 OpenShift 服务器创建 Fuse 集成项目,但本章介绍了使用 Red Hat Container Development Kit (CDK) v3 在本地安装的 Fuse 集成项目。

以下小节介绍了如何创建和部署第一个 Fuse 集成项目:

注意

您还可以将 Fuse 集成项目作为本地 Camel 上下文运行,请参阅 第 5.1 节 “将路由作为本地 Camel 上下文运行”,然后在 JMX Navigator 视图中连接它,您可以在其中监控并测试路由上下文。您还可以在 Fuse Integration 项目(第 II 部分 “调试路由上下文”)上运行 Camel 调试器,以公开并修复路由上下文中的所有逻辑错误。

6.1. 添加 Red Hat Container Development Kit 服务器

将 Red Hat Container Development Kit 添加到 服务器 视图中:

  1. 如有必要,通过选择 WindowPerspectiveOpen PerspectiveFuse Integration,切换到 Fuse Integration 视角。

    注意

    如果没有打开此过程中描述的视图,您可以选择 WindowShow ViewOther,然后选择要打开的视图的名称。

  2. Servers 视图中,点链接 No servers are available。点击此链接创建新 server…​ 以打开 Define a New Server 向导。只有 Servers 视图不包含服务器条目时,才会显示此链接。

    否则,在 Servers 视图中右键单击以打开上下文菜单,然后选择 NewServer 以打开 Define a New Server 向导。

    DefNewSrvCDK
  3. 选择 Red Hat JBoss MiddlewareRed Hat Container Development Kit 3.2+

    接受以下的默认值:

    • 服务器的主机名 PlacementBinding - localhost
    • 服务器名称 TOKEN- Container Development 环境
  4. 点击 Next 以打开 Red Hat Container Development Environment 页面。
  5. MiniShift Binary 旁边,点 Browse,进入安装 Red Hat Container Development Kit 3.x 的位置,然后点 Open
  6. Username 旁边,单击 Add 以打开 Add a Credential 页面。
  7. 以这种方式设置凭证:

    • 用户名 RoleBinding-EnterEnter 用于登录到红帽帐户的名称。
    • 总是提示密码 TOKEN-LeaLeave 为 (禁用)。
    • 密码 Curve-EnterEnter 用于登录到红帽帐户的密码。
  8. 点击 OK 返回 Red Hat Container Development Environment 页面,该页面现已填充。例如:

    CDEdefUserFolder3
  9. FinishContainer Development Environment 3.2+ [Stopped, Synchronized] 会出现在 Servers 视图中。当您添加 CDK 3.x 服务器时,容器开发环境 3.2+ 是默认的服务器名称。

6.2. 启动容器开发环境(CDE)和虚拟 OpenShift 服务器

启动容器开发环境(CDE)也会启动虚拟 OpenShift 服务器。停止 CDE 也会停止虚拟 OpenShift 服务器。

  1. Servers 视图中,选择 Container Development Environment 3 [stopped, Synchronized],然后单击 Servers 菜单栏中的 run exec

    控制台 视图会打开并显示启动过程的状态:

    CDEstartTerminal
    注意

    在初始启动时,CDE 询问您是否接受不受信任的 SSL 证书。单击 Yes

    当启动过程完成后,Servers 视图会显示:

    CDEsrvStartedSyncd
  2. 切换到 OpenShift Explorer 视图。

    虚拟 OpenShift 服务器实例(开发者 )也正在运行:

    OSEopenshift devAutostart

    https://192.168.99.100:8443 是 OpenShift 开发人员 Web 控制台的 URL 示例。您的安装会显示您的实例的 URL。如需了解更多详细信息,请参阅 第 6.6 节 “访问 OpenShift Web 控制台”

6.3. 创建新的 OpenShift 项目

将 Fuse 集成项目部署到 OpenShift 时,它将发布到您在此处创建的 OpenShift 项目。

  1. OpenShift Explorer 视图中,右键单击 developer 条目,以打开上下文菜单。
  2. 选择 NewProject 以打开 New OpenShift Project 向导。
  3. 以这种方式设置新项目的属性:

    • Project Name 字段中输入项目命名空间的名称。

      只有小写字母、数字和破折号才有效。

    • Display Name 字段中输入要在虚拟 OpenShift Web 控制台的 Overview 页面中显示的名称。
    • Description 字段留空。

      例如:

      新项目
  4. Finish

    新的 OpenShift 项目(在这个示例中,New FIS Test newtest)会出现在 OpenShift Explorer 选项卡中,在本例中为 developer https://192.168.99.100:8443: https://192.168.99.100:8443

    OSEnewFISprojCreated
    注意

    myproject myproject 是随 OpenShift 提供的初始示例项目。

    OpenShift Explorer 视图中选择了 New FIS Test newtest 后,Properties 视图会显示项目的详细信息。例如:

    OSEnewFISprojProps
    注意

    将项目部署到 OpenShift 时,Properties 视图会收集并显示有关 OpenShift Web 控制台所执行的操作相同的信息。

6.4. 创建新的 Fuse 集成项目

在创建新的 Fuse 集成项目前,您应该启用 staging 存储库。这是必需的,因为一些 Maven 工件没有包括在默认的 Maven 存储库中。要启用暂存存储库,请选择 WindowPreferencesFuse ToolingStaging Repositories

要创建 Fuse 集成项目,请使用 OpenShift 模板上的 Spring Boot

  1. Project Explorer 视图中,右键单击以打开上下文菜单,然后选择 New → Fuse Integration Project 来打开向导的 Choose a Project name 页面:

    新的 Fuse 集成项目
  2. Project Name 字段中,键入与您正在使用的工作区唯一的名称,例如 myFISproject

    接受其他选项的默认值。

  3. Next 打开 Select a Target Runtime 页面:

    新项目 Camel 版本

    保留 Target Runtime 的默认值(无 Runtime selected)和 Camel 版本

  4. Next 打开 Advanced Project Setup 页面:

    高级项目设置
  5. 使用 Spring Boot - Spring DSL 模板选择 Simple 日志

    高级项目模板
  6. Finish

    注意

    由于为首次 Fuse 集成项目下载的依赖项数量,构建可能需要一些时间。

    如果 Fuse 集成 透视图尚未打开,Developer Studio 会提示您指明是否要立即打开它。单击 Yes

构建完成后,Fuse Integration 视角会显示项目,例如:

FIS ProjCreatedFIP

此时,您可以:

6.5. 将 Fuse 集成项目部署到 OpenShift

  1. Project Explorer 视图中,右键单击项目的根目录(本例中为 myFISproject),以打开上下文菜单。
  2. 选择 Run AsRun Configuration 以打开 Run Configuration 向导。
  3. 在侧边菜单中,在 OpenShift 上选择 Maven Build → Deploy <projectname > (在本例中,在 OpenShift 上部署 myFISproject),以打开项目的默认运行配置:

    FIS RunCnfgMain

    保留默认设置,因为它们位于 选项卡中。

  4. 打开 JRE 选项卡以访问 VM 参数:

    FIS RunCfgJRE
  5. VM 参数 窗格中,更改 -Dkubernetes.namespace=test 参数的值,以匹配您创建 OpenShift 项目时使用的项目名称(OpenShift 项目名称第 6.3 节 “创建新的 OpenShift 项目” 中)。

    在本例中,将默认值 test 改为 newtest

    FIS RunCfgVMargsChg

    根据 OpenShift 配置,您可能需要修改其他的VM 参数来支持它:

    • -Dkubernetes.master=https://192.168.99.1:8443

      在运行多个 OpenShift 实例或使用远程实例时,您需要为部署指定 OpenShift 实例的目标 URL。上面的 URL 是示例。

    • -Dkubernetes.trust.certificates=true

      • 在使用 CDK 时,需要此参数。将其设置为 true
      • 如果您使用具有有效 SSL 证书的 OpenShift 实例,请将此参数的值更改为 false
  6. 单击 Apply,然后单击 Run

    由于下载依赖项数量,首次部署可能需要一些时间。您的计算机和互联网连接的速度是做出因素。通常,需要 25 到 35 分钟的时间来完成第一次部署。

    Console 视图中,您可以跟踪部署过程的进度。在以下输出中,条目 *Pushing image 172.30.1 …​.* 表示项目构建成功,且应用程序镜像被推送到 OpenShift,其中它们用于构建 Docker 容器。

    FIS ConLogSuccess1

    当部署成功完成时,Console 视图会显示 BUILD SUCCESS

    FIS ConLogSuccess2
  7. 切换到 OpenShift Explorer 视图并选择 New FIS Test newtest

    OSE NewFISTestDeploy1

    Properties 视图中,Details 页面会显示所有项目的属性值。

    OSEnewFISprojProps

    打开其他选项卡(BuildsBuild Configs 、Deployment、…​)以查看项目的其他属性。Properties 视图提供与 OpenShift Web 控制台相同的信息。

  8. OpenShift Explorer 视图中,选择 camel-ose-springboot-xmlProperties 视图中查看其详情:

    NFT camxmlPropsDetails

    滚动浏览其他选项卡,以查看部署配置的其他属性。

  9. OpenShift Explorer 视图中,选择 camel-ose-springboot-xml-1-mdmtd Pod Running,然后在 Properties 视图中查看正在运行的实例的详情:

    NFT ImageStreamPropsDetails
  10. OpenShift Explorer 视图中,右键点击 camel-ose-springboot-xml-1-mdmtd Pod Running,然后选择 Pod Logs…​

    注意

    如有提示,输入安装的 oc 可执行文件的路径。它需要检索 pod 日志。

    Console 视图会自动打开,显示正在运行的 pod 的日志:

    OSE podLogsDisplayed

    Console 视图的菜单栏中点 Close 以终止会话并清除控制台输出。

6.6. 访问 OpenShift Web 控制台

注意

这些信息只适用于 Red Hat Container Development Kit 安装。

要访问 OpenShift Web 控制台,请打开浏览器并输入 OpenShift 服务器的 URL,该 URL 特定于您的实例和计算机。例如,在浏览器的地址字段中,输入 https://192.168.99.100:8443

您可以使用默认凭证作为开发者或管理员登录到 web 控制台:

  • 默认开发人员角色

    开发人员用户可以仅查看自己的项目,以及提供的 OpenShift 示例项目,它演示了 OpenShift v3 功能。开发人员用户可以创建、编辑和删除他们自己的 OpenShift 上部署的任何项目。

    • Username - developer
    • Password - developer
  • 默认管理员角色

    管理员用户可以在 OpenShift (CDK)上查看和访问所有项目。管理员可以创建、编辑和删除 OpenShift 中部署的任何项目。

    • 用户名 - admin
    • Password - admin

有关使用 OpenShift Web 控制台的更多信息,请参阅 入门指南

第 7 章 使用 Red Hat Fuse SAP Tool Suite

Red Hat Fuse SAP Tool Suite 可使您的 Camel 路由与远程 SAP Application Server 集成。提供了各种 SAP 组件来支持远程功能调用(RFC)以及 Intermediate Documents (IDocs)的发送和接收。SAP 工具套件依赖于 SAP 中的 JCo 和 IDoc 客户端库。要安装和使用这些库,您必须有一个 SAP Service Marketplace 帐户。

7.1. 安装 Red Hat Fuse SAP Tool Suite

概述

Red Hat Fuse SAP Tool Suite 提供了 Edit SAP Connection Configuration 对话框,它可帮助您创建和管理 SAP Application Server 和 Destination 连接。默认情况下不安装该套件,因为它需要由 SAP 单独许可的第三方 JCo 和 IDoc 客户端库。

SAP 工具的平台限制

因为 SAP 工具套件依赖于第三方 JCoIDoc 库,因此它只能安装到这些库支持的平台上。有关 SAP 工具的平台限制的详情,请参阅 Red Hat Fuse 7.11 支持的配置

前提条件

  • 在安装 Fuse SAP 工具套件前,必须先从以下位置下载 JCo 和 IDoc 库: http://service.sap.com/connectors
  • 要为您的操作系统确定适当的 JCo 和 IDoc 库,请查看 Red Hat Fuse 支持的配置 页面。
  • 要下载 JCo 和 IDoc 库,您需要一个 SAP Service Marketplace 帐户。
  • 对于这个安装过程,您可以使用存档格式保留下载的文件。不需要提取内容。

创建和测试 SAP Destination Connection

概述

在 Fuse SAP Tool 套件中,Edit SAP Connection Configuration 对话框可帮助您创建和管理 SAP 应用程序目的地连接。这部分论述了如何创建和测试 SAP 目标连接。

流程

要创建并测试 SAP 目的地连接,请执行以下步骤:

  1. 导航到路由编辑器 全局配置选项卡,然后单击添加

    此时会出现 Create new global element 视图。

  2. SAP 下,选择您要创建的连接类型。选择 SAP Connection 并点 确定

    此时会出现 Edit SAP Connection Configuration 对话框。它允许您创建、编辑和删除 Destination 和 Server Connection 配置。

  3. 要创建新的 Destination Data Store,点 Add Destination 选项卡。

    此时会出现 Create Destination 对话框。

  4. Destination Name 字段中输入目标名称并点 Ok
  5. 属性 对话框中,

    1. Basic 选项卡配置连接到 SAP 目的地所需的基本属性。在此选项卡中,填写以下属性字段来配置连接:

      • SAP Application Server
      • SAP System Number
      • SAP 客户端
      • logon User
      • 登录密码
      • 登录语言
    2. Connection 选项卡添加连接到 SAP 目的地所需的值。填写以下属性字段来配置连接:

      • SAP System Number
      • SAP Router String
      • SAP Application Server
      • SAP Message Server
      • SAP Message Server Port
      • 网关主机
      • 网关端口
      • SAP System ID
      • SAP Application Server Group
    3. Authenticate 选项卡添加验证 SAP 目的地所需的值。填写以下属性字段来配置连接。

      • SAP 身份验证类型
      • SAP 客户端
      • logon User
      • logon User Alias
      • 登录密码
      • SAP SSO Logon Ticket
      • SAP X509 Login Ticket
      • 登录语言
    4. Special 标签页。在此选项卡中,填写以下属性字段来配置连接:

      • 选择 CPIC Trace
      • 初始代码页
    5. 点击 Pool 选项卡并填写以下属性字段来配置连接:

      • 连接池 Peak 限制
      • 连接池容量
      • 连接池过期时间
      • 连接池过期检查定期
      • 连接池最大获取客户端时间
    6. SNC 选项卡并填写以下属性字段来配置连接:

      • SNC 合作伙伴名称
      • SNC 级安全
      • SNC Name
      • SNC 库路径
    7. 点击 Repository 选项卡,并填写以下属性字段来配置连接:

      • 仓库目的地
      • 仓库登录用户
      • 仓库日志密码

        注意

        如果您需要有关这些设置的更多信息,请参阅 SAP 文档。

  6. 您现在已准备好测试目标连接。在 Edit SAP Connection Configuration 对话框中,右键单击目的地名称并选择 Test

    此时会打开 Test Destination Connection 对话框。

  7. 该对话框使用当前目标配置设置来连接 SAP Destination Data Store。如果测试成功,您会在状态区域中看到以下信息:

    Connection test for destination 'YourDestination' succeeded.

    否则,状态区域中会显示错误报告。

  8. Close 关闭 Test Destination Connection 对话框。
  9. Finish。新创建的 SAP Destination Connection 会出现在 SAP 下。

7.2. 创建和测试 SAP 服务器连接

概述

在 Fuse SAP Tool 套件中,Edit SAP Connection Configuration 对话框可帮助您创建和管理 SAP Application Server 连接。这部分论述了如何创建和测试 SAP 服务器连接。

流程

要创建并测试 SAP 服务器连接,请执行以下步骤:

  1. 导航到路由编辑器 全局配置选项卡,然后单击添加

    此时会出现 Create new global element 视图。

  2. SAP 下,选择您要创建的连接类型。选择 SAP Connection 并点 确定

    此时会出现 Edit SAP Connection Configuration 对话框。它允许您创建、编辑和删除 Destination 和 Server Connection 配置。

  3. 要创建新 服务器数据存储, 请单击 Add Server 选项卡。

    此时会出现 Create Server 对话框。

  4. Server Name 字段中输入 Server 的名称,然后单击 Ok
  5. 属性 对话框中,

    1. Mandatory 选项卡配置连接到 SAP 服务器所需的基本属性。在此选项卡中,填写以下属性字段来配置连接:

      • 网关主机
      • 网关端口
      • Program ID
      • 仓库目的地
      • 连接计数
    2. 点击 Optional 选项卡并填写以下属性字段来配置连接:

      • SAP Router String
      • worker Thread 数
      • 最小线程数
      • 最多启动时间
      • 仓库映射
    3. 单击 SNC 选项卡,并填写以下属性字段来配置连接。

      • SNC 级安全
      • SNC Name
      • SNC 库路径

        注意

        有关设置的更多信息,请参阅 SAP 文档。

  6. 您现在已准备好测试服务器连接。在 Edit SAP Connection Configuration 对话框中,右键单击服务器名称并选择 Test

    此时会打开 Test Server Connection 对话框。

  7. 该对话框使用当前服务器配置设置来连接 SAP Server Data Store。如果测试成功,您会在状态区域中看到以下信息:

    Server state: STARTED
    Server state: ALIVE

    如果测试失败,服务器状态会报告为 DEAD

  8. 单击 Stop 以关闭 Test Sever。
  9. 单击 Close 以关闭 Test Server Connection 对话框。
  10. Finish。新创建的 SAP Server Connection 会出现在 SAP 下。

7.3. 删除目的和服务器连接

概述

这部分论述了如何在 Edit SAP Connection Configuration 对话框中删除 SAP Destination 和 Server 连接。

流程

如果要删除 Destination 和 Server 连接,请执行以下步骤:

  1. 导航到路由编辑器 全局配置选项卡,然后单击添加

    此时会出现 Create new global element 视图。

  2. SAP 下,选择 SAP Connection,再单击 确定

    此时会出现 Edit SAP Connection Configuration 对话框。它允许您创建、编辑和删除 Destination 和 Server Connection 配置。

  3. Edit SAP Connection Configuration 对话框中,选择您要删除的 Destination 和 Server Data Stores。
  4. Delete。它将删除所选连接。

    Atlast,单击 Finish。它将保存所有更改。

7.4. 创建新 SAP 端点

概述

您可以使用路由编辑器中的组件面板,将 SAP 组件添加到具有 Edit SAP Connection Configuration 对话框的路由中。

注意

如果您使用 SAP Connection 视图,请记得将必要的 SAP 连接配置数据粘贴到 Blueprint XML 或 Spring XML 代码中。

前提条件

您必须已创建了一些 SAP 目的地连接和/或服务器连接,并与 Edit SAP Connection 配置对话框的帮助。

注意

如果您使用 SAP Connection 视图,请将此配置导出到适当类型的文件中(Blueprint XML 或 Spring XML)。

流程

要创建新 SAP 端点,请执行以下步骤:

  1. 假设您已经拥有 Fuse 项目和 Camel XML 文件可供使用(可以使用蓝图 XML 或 Spring XML 格式)。
  2. 在路由编辑器中打开您的 Camel XML 文件。如果您已经安装了 Red Hat Fuse SAP Tool Suite,应该可以在路由编辑器中查看 Components palette 下的 SAP 组件。以下 SAP 组件由工具套件提供:

    • SAP IDoc Destination
    • SAP IDoc List Destination
    • SAP IDoc List Server
    • SAP qRFC Destination
    • SAP Queued IDoc Destination
    • SAP Queued IDoc List Destination
    • SAP sRFC Destination
    • SAP sRFC Server
    • SAP tRFC Destination
    • SAP tRFC Server

      在路由编辑器的 Design 选项卡中,将其中一个组件拖到 canva,以在当前的 camelContext 中创建一个新的 SAP 端点。

      注意

      SAP Netweaver 组件不属于 Red Hat Fuse SAP Tool Suite。它托管在 Apache Camel 项目中。

  3. 点击 canvas 底部的 Source 选项卡,切换到路由编辑器的 Source 选项卡。您可以查看路由的 XML 源。
  4. 在指定 SAP 端点 URI 时,必须以 URI 格式嵌入目的地名称或服务器连接名称。例如,sap-srfc-destination 组件具有以下 URI 格式:

    sap-srfc-destination:destinationName:rfcName

    要引用特定目的地,请使用相关条目元素的 key 属性的值作为这个 URI 中的 destinationName

第 8 章 数据转换入门

面临系统和数据集成的挑战之一是组件系统通常会使用不同的数据格式一起工作。您不能简单地将信息从一个系统发送到另一个系统,而不会将其转换为接收系统识别的格式(或语言)。数据转换是提供给此翻译的术语。

在本章中,您将学习如何在预定义的 Camel 路由中包含数据转换。Camel 路由将来自源端点的消息定向到消耗 JSON 数据的目标端点。您要添加并定义数据转换组件,用于将源的 XML 数据格式映射到目标的 JSON 数据格式。

8.1. 为数据转换示例创建项目

  1. 创建一个新的 Fuse Integration Project (选择 FileNewFuse Integration Project)。

    在向导中提供以下信息:

    • 项目名称: starter
    • 部署平台: 独立
    • 运行时环境: Karaf/Fuse on Karaf
    • Camel 版本:使用默认值
    • Template: Empty - Blueprint DSL
  2. 从以下位置下载准备的数据示例 :https://github.com/FuseByExample/fuse-tooling-tutorials/archive/user-guide-11.1.zip
  3. 将数据文件夹及其包含从 user-guide-11.1.zip 归档中包含的三个文件提取到 Fuse Integration 项目的 src 目录(starter/src/ data )。
  4. Project Explorer 视图中,展开 starter 项目。
  5. 双击 Camel Contextssrc/main/resources/OSGI-INF/blueprint/blueprint.xml,以在路由编辑器的 Design 选项卡中打开路由。
  6. Source 选项卡查看底层 XML。
  7. <route id="_route1"/& gt; 替换为以下代码:

    <route id="_route1">
      <from id="_from1" uri="file:src/data?fileName=abc-order.xml&amp;noop=true"/>
      <setHeader headerName="approvalID" id="_setHeader1">
        <simple>AUTO_OK</simple>
      </setHeader>
      <to id="_to1" uri="file:target/messages?fileName=xyz-order.json"/>
    </route>
  8. 点击 Design 标签页返回路由的图形显示:

    描述

8.2. 在 Camel 路由中添加数据转换节点

  1. 面板中,展开 Transformation drawer。
  2. Data Transformation 模式,然后在 canvas 中点击 SetHeader _setHeader1To_to1 节点之间的箭头。

    New Transformation 向导会打开,使用 Dozer File Path 字段自动填充。

    描述
  3. 填写其余字段:

    • Transformation ID 字段中,输入 xml2json
    • 对于 Source Type,请从下拉菜单中选择 XML
    • 对于 Target Type,从下拉菜单中选择 JSON
  4. 点击 Next

    Source Type (XML) 定义页面会打开,您可以在其中指定 XML Schema (默认)或示例 XML 实例文档,以提供源数据的类型定义:

    描述
  5. 启用 XML Schema
  6. 对于 Source 文件,浏览到 XML 模式文件或用于源数据类型定义的 XML 实例文件的位置,然后选择它(本例中为 abc-order.xsd)。

    XML Structure preview 窗格显示 XML 结构的预览。

  7. Element root 字段中,输入 ABCOrder

    工具使用此文本来标记显示要映射的源数据项目的窗格。

    Source Type (XML) 定义页面现在应如下所示:

    描述
  8. Next 打开 Target Type (JSON) 定义页面。这是您为目标数据指定类型定义的位置。

    描述
  9. 单击 JSON 实例文档

    Target File 字段中,输入到 xyz-order.json 实例文档或浏览到该路径。JSON Structure Preview 窗格显示 JSON 数据结构的预览:

    描述
  10. Finish

转换编辑器将打开。在这里,您可以将 XML 源中的数据项目映射到 JSON 目标中的数据项目。

描述

转换编辑器由三个面板组成:

  • Source TOKEN-youlists 源的可用数据项
  • mappings TOKEN- 只有显示源数据项和目标数据项之间的映射
  • 目标 TOKEN-youlists 目标的可用数据项

此外,编辑器的详细信息窗格位于编辑器的三个面板(在已进行第一次映射的下面),图形图形显示当前所选择的源和目标数据的层次结构。例如:

带有映射到目标属性 role="italic">custId 的 source property customerNum 详情面板

使用详情窗格,您可以自定义所选源和目标数据项的映射:

8.3. 将源数据项映射到目标数据项

  1. 展开 SourceTarget 面板上左边的所有项目,并在映射面板中的右侧展开。

    描述
  2. Source 面板中拖动数据项目,并将其保存在 Target 面板中对应的数据项。

    例如,将 customerNum 数据项目从 Source 面板中拖动,并将其放到 Target 面板中的 custId 数据项目。

    描述

    映射会出现在映射面板中,SourceTarget 数据项的详情将显示在详细信息窗格中。

  3. 继续将源数据项目拖放到对应的目标数据项目,直到您完成了所有基本映射。

    初学者 示例中,要映射的剩余数据项是:

    目标

    orderNum

    orderId

    status

    priority

    id

    itemId

    price

    cost

    quantity

    amount

    注意

    您可以将集合(包含列表或集合的数据收集项目)映射到非集合数据项,反之亦然,但您无法将集合映射到其他集合。

  4. SourceTarget 面板上点 Hide mapped fields icon ,以快速确定是否已映射所有数据项目。

    描述

    只有未映射的数据项目才会在 SourceTarget 面板中列出。

    初学者 示例中,其余的未映射 目标 属性是 批准代码和 原始卷

  5. 点击 blueprint.xml 选项卡返回路由的图形显示:

    DTmapComplete
  6. FileSave

在创建转换测试后,您可以在转换文件上运行 JUnit 测试。详情请查看 第 8.4 节 “创建转换测试文件并运行 JUnit 测试”。此时您会看到此输出,在 Console 视图中看到以下输出:

对于源 XML 数据:

<?xml version="1.0" encoding="UTF-8"?>
<ABCOrder xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:java="http://java.sun.com">
    <header>
        <status>GOLD</status>
        <customer-num>ACME-123</customer-num>
        <order-num>ORDER1</order-num>
    </header>
    <order-items>
        <item id="PICKLE">
            <price>2.25</price>
            <quantity>1000</quantity>
        </item>
        <item id="BANANA">
            <price>1.25</price>
            <quantity>400</quantity>
        </item>
    </order-items>
</ABCOrder>

对于目标 JSON 数据:

{"custId":"ACME-123","priority":"GOLD","orderId":"ORDER1","lineItems":[{"itemId":"PICKLE",
"amount":1000,"cost":2.25},{"itemId":"BANANA","amount":400,"cost":1.25

8.4. 创建转换测试文件并运行 JUnit 测试

  1. Project Explorer 视图中的 starter 项目右键,然后选择 NewOtherFuse ToolingFuse Transformation Test
  2. 选择 Next 以打开 New Transformation Test 向导。
  3. New Transformation Test 向导中,设置以下值:

    字段

    软件包

    example

    Camel 文件路径

    OSGI-INF/blueprint/blueprint.xml

    转换 ID

    xml2json

  4. Finish
  5. Project Explorer 视图中,导航到 starter/src/test/java/example,然后打开 TransformationTest.java 文件。
  6. 在转换方法中 添加以下代码

    startEndpoint.sendBodyAndHeader(readFile("src/data/abc-order.xml"), "approvalID", "AUTO_OK");
  7. FileSave

    现在您可以在这些教程中的任何时间点在转换文件上运行 JUnit 测试。

  8. Project Explorer 视图中,展开 starter 项目,以公开 /src/test/java/example/TransformationTest.java 文件。
  9. 右键单击 打开上下文菜单,再选择 Run 作为 JUnit Test

    JUnit Test 窗格将打开,以显示测试的状态。为了避免损坏工作区,请在 Console 视图附近的底部面板中拖动并丢弃该窗格。

    描述
  10. 打开 Console 视图以查看日志输出。

8.5. 将恒定变量映射到数据项目

当源/目标数据项没有对应的目标/源数据项时,您可以将恒定变量映射到现有数据项。

初学者 示例中,目标数据项 origin 没有对应的源数据项。将 origin 属性映射到恒定变量:

  1. Source 面板中,点 Variables 视图。

    描述
  2. Variables 视图中,点 Add a new variable icon 打开 输入新变量名称 对话框。

    描述
  3. 为您要创建的变量输入名称。

    对于 初学者,输入 ORIGIN

  4. 点击 OK

    新创建的变量 ORIGINName 列中的 Variables 视图中显示,默认值 ORIGINValue 列中。

  5. 点击默认值编辑它,并将值更改为 Web
  6. Enter 键。
  7. 将新变量 ORIGIN 拖放到 Target 面板中的原始数据项。

    描述

    变量 $(ORIGIN) 的新映射会出现在 Mappings 面板中以及详情面板中。

  8. TransformationTest.java 文件上运行 JUnit 测试。详情请查看 第 8.4 节 “创建转换测试文件并运行 JUnit 测试”

    Console 视图显示 JSON 格式的输出数据:

    {"custId":"ACME-123","priority":"GOLD","orderId":"ORDER1","origin":"Web",
    "approvalCode":"AUTO_OK","lineItems":[{"itemId":"PICKLE","amount":1000,"cost":2.25},
    {"itemId":"BANANA","amount":400,"cost":1.25}]}

8.6. 将表达式映射到数据项目

例如,您可以将目标数据项映射到 Camel 语言表达式的动态评估,例如:

使用目标 批准代码 数据项目,它缺少对应的源数据项:

  1. 点击 Add a new mapping icon 在映射面板中添加空的转换映射。

    描述
  2. Target 面板中,将 批准代码 数据项拖放到 Mappings 面板中新创建的映射的目标字段。

    描述

    批准代码 数据项目也会出现在详细信息窗格的目标框中。

  3. 在详细信息窗格中,点 ABCOrder 源框中的 drop-down menu access 以打开下拉菜单。

    描述

    菜单选项取决于所选数据项的数据类型。可用选项已粗体显示。

  4. 选择 Set expression 以打开 Expression 对话框。

    描述
  5. 在语言中,从可用的语言列表中选择要使用的表达式语言。可用的选项取决于数据项目的数据类型。

    对于 初学者 示例,请选择 Header

  6. 在详细信息窗格中,选择要使用的表达式的来源。

    选项是 ValueScript

    对于 初学者 示例,单击 Value,然后输入 ApprovalID

  7. 点击 OK

    描述

    映射 面板和 详细信息窗格都会显示目标数据项目 批准 代码的新映射。

  8. TransformationTest.java 文件上运行 JUnit 测试。详情请查看 第 8.4 节 “创建转换测试文件并运行 JUnit 测试”

    Console 视图显示 JSON 格式的输出数据:

    {"custId":"ACME-123","priority":"GOLD","orderId":"ORDER1","origin":"Web",
    "approvalCode":"AUTO_OK","lineItems":[{"itemId":"PICKLE","amount":1000,"cost":2.25},
    {"itemId":"BANANA","amount":400,"cost":1.25}]}

8.7. 在映射的数据项中添加自定义转换

当源数据项目不满足目标系统要求时,您可能需要修改源数据项目的格式。

例如,为了满足目标系统的要求,所有客户 ID 都用括号括起:

  1. Mappings 面板中,选择 customerNum 映射来填充详细信息面板。

    描述
  2. 在详细信息窗格中,点 ABCOrder 源框中的 drop-down menu access 以打开下拉菜单。

    描述
  3. 选择 Add custom transformation 以打开 Add Custom Transformation 页面。

    描述
  4. Class 字段旁的 create new function button 打开 Create a New Java Class 向导。

    描述
  5. 修改以下字段:

    • 软件包 Enter-EnterEnter 示例 .
    • 名称 Enter-EnterEnter MyCustomMapper.
    • 方法名称 objectClass-将Change 映射到 方括号

      所有其他字段保留原样。

  6. Finish

    Add Custom Transformation 页面会自动填充 Class and Method 字段:

    描述
  7. 单击 OK 以在 Java 编辑器中打开 MyCustomMapper.java 文件:

    描述
  8. 编辑 方括号 方法,更改最后一行 返回 null; 这样:

    return "[" + input + "]";
  9. 点击 transformation.xml 选项卡切回到转换编辑器。

    描述

    详细信息窗格显示 方括号 方法已与 customerNum 数据项目相关联。

    方括号 方法在源输入上执行,然后再发送到目标系统。

  10. TransformationTest.java 文件上运行 JUnit 测试。详情请查看 第 8.4 节 “创建转换测试文件并运行 JUnit 测试”

    Console 视图显示 JSON 格式的输出数据:

    {"custId":"[ACME-123]","priority":"GOLD","orderId":"ORDER1","origin":"Web",
    "approvalCode":"AUTO_OK","lineItems":[{"itemId":"PICKLE","amount":1000,"cost":2.25},
    {"itemId":"BANANA","amount":400,"cost":1.25}]}

8.8. 将简单的数据项映射到集合中的数据项目

在本教程中,您将修改现有映射,用于将源中的所有 ID 映射到目标中的 itemId新映射会将 Source 中的 customerNum 数据项映射到 Target 中 lineItems 中第二项的 itemId

在这个版本中,源中的 no id将映射到 Target 中的 itemIds。

  1. Mappings 面板中,选择映射 id mouse-sandboxed> itemId 以在详情窗格中显示映射。

    描述
  2. 在 Source 框中,点击 drop-down menu access 以打开下拉菜单,然后选择 Set 属性

    描述
  3. Select a property 页面中,展开 标头 节点并选择 customerNum。点 OK 保存更改。

    选择属性
  4. details 窗格现在显示 XyzOrder 有一个 lineItems 字段。单击 行Items 旁边的切换按钮,将其值增加到 1

    注意

    索引基于零,因此值 1 选择集合中 itemId 的第二个实例。

    描述

    请注意,详细信息窗格中显示 customerNum 映射到 lineItems 集合中第二个项目的 itemId

  5. TransformationTest.java 文件上运行 JUnit 测试。详情请查看 第 8.4 节 “创建转换测试文件并运行 JUnit 测试”

    Console 视图显示 JSON 格式的输出数据:

    {"custId":"[ACME-123]","priority":"GOLD","orderId":"ORDER1","origin":"Web",
    "approvalCode":"AUTO_OK","lineItems":[{"amount":1000,"cost":2.25},
    {"itemId":"ACME-123","amount":400,"cost":1.25}]}

8.9. 在映射的数据项中添加内置功能

您可以使用内置字符串相关的功能,将转换应用到映射的数据项。

  1. Transformation 面板中,选择到 优先级 映射来填充详情面板 的状态

    描述
  2. 在 Source 框中,点 drop-down menu access 以打开下拉菜单,然后选择 Add transformation

    描述
  3. Transformations 窗格中,选择 附加,然后在 Arguments 窗格中,输入 -level 作为 后缀 的值。

    此附加功能在将指定的后缀映射到目标 优先级 数据项之前,会将指定的后缀添加到 状态 字符串的末尾。

    描述
  4. 点击 OK

    描述

    默认情况下,详细信息窗格以用户友好的格式显示在 状态 数据项中添加附加功能的结果。您可以点 Source 框中最右侧的 drop-down menu access 并更改此格式,然后选择 Show 标准格式

    描述
  5. TransformationTest.java 文件上运行 JUnit 测试。详情请查看 第 8.4 节 “创建转换测试文件并运行 JUnit 测试”

    Console 视图显示 JSON 格式的输出数据:

    {"custId":"[ACME-123]","priority":"GOLD-level","orderId":"ORDER1","origin":"Web",
    "approvalCode":"AUTO_OK","lineItems":[{"amount":1000,"cost":2.25},{"itemId":"ACME-123",
    "amount":400,"cost":1.25}]}

8.10. 将 Fuse 集成项目发布数据转换为红帽 Fuse 服务器

在将数据转换项目发布到 Fuse 服务器前(请参阅 第 28 章 将 Fuse 集成项目发布到服务器),您需要在 Fuse 运行时安装以下功能:

  • camel-dozer
  • camel-jackson
  • camel-jaxb

在 Fuse 运行时安装所需功能:

  1. 如果还没有,切换到 Fuse Integration 视角。
  2. 如有必要,将 Fuse 服务器添加到 服务器 列表中(请参阅 第 27.1 节 “添加服务器”)。
  3. 启动 Fuse 服务器(请参阅 第 27.2 节 “启动服务器”),并等待 JBoss Fuse shell 在终端视图中显示。
  4. 对于每个需要的 camel- 功能,在 JBossFuse:admin@root> 提示类型中:

    features:install camel-<featureName>

    其中 featureNamedozerJacksonjaxb 之一。

  5. 验证在 JBossFuse:admin@root > 提示类型中是否已成功安装每个功能:

    features:list --ordered --installed

    您应该看到刚刚在输出列表中安装的 camel 功能:

    DTCamFeatsInstalled

第 9 章 为 Fuse Online 集成开发扩展

Fuse Online 是一个红帽 Fuse 功能,它为集成应用程序提供 Web 界面。如果没有编写代码,业务专家可以使用 Fuse Online 连接到应用程序,并选择性地操作不同应用程序间的数据。如果 Fuse Online 没有提供集成商需要的功能,那么开发人员可创建定义所需行为的扩展。

您可以使用 Fuse 工具开发可提供要在 Fuse Online 中使用的功能的扩展。扩展定义:

  • 在集成中的连接间处理数据的一个或多个自定义 步骤

    或者

  • 一个自定义 连接器

在 Fuse Online 中,连接器 代表特定应用程序,用于从或将数据发送到的特定应用程序。每个连接器都是用于创建与该特定应用程序的连接的模板。例如,Salesforce 连接器是创建连接到 Salesforce 的模板。如果 Fuse Online 没有提供 Fuse 在线用户需要的连接器,您可以开发一个定义自定义连接器的扩展。

在 Fuse 中,集成中的连接之间发生的数据操作被称为 步骤。Fuse Online 提供过滤和映射数据等操作的步骤。要以未由 Fuse 在线内置步骤提供的方式处理数据,您可以开发一个 Fuse 在线扩展来定义一个或多个自定义步骤。

注意

您可能希望在您选择的 IDE 中开发扩展。无论您使用 Fuse 工具,还是另一个 IDE 都完全取决于个人首选项。有关在任何 IDE 中开发扩展的信息,正在将应用程序与 Fuse 在线集成

9.1. 任务概述

以下是开发 Fuse 在线扩展的任务概述:

  1. 创建 Fuse Online 扩展项目,再选择 Custom ConnectorCustom Step 作为扩展类型。
  2. 根据扩展类型,为扩展编写代码:

    • 对于 自定义连接器 :定义基础 Camel 组件、连接器图标、全局连接器属性和连接器操作。
    • 对于 自定义步骤 :添加路由、定义操作并指定任何依赖项。
  3. 构建 .jar 文件。
  4. .jar 文件提供给 Fuse Online 用户。

Fuse 在线用户将 .jar 文件上传到 Fuse Online,这将使自定义连接器或自定义步骤可供使用。有关 Fuse 在线和如何创建集成的信息,请参阅 将应用程序与 Fuse 在线集成

9.2. 前提条件

开始前,您需要以下信息和知识:

  • 有关 Fuse 在线自定义连接器或步骤(从 Fuse Online 用户)所需的功能的描述。
  • 扩展 Fuse Online 版本号。
  • 对于自定义连接器,PNG 或 SVG 格式的图标镜像文件。Fuse Online 在显示集成流时使用这个图标。如果没有提供图标,则 Fuse Online 在包含扩展名的 .jar 时会生成。
  • 您应该熟悉:

    • Fuse Online
    • Spring Boot XML 或 Java
    • Apache Camel 路由(如果您想要创建基于路由的步骤扩展)
    • JSON
    • maven

9.3. 创建自定义连接器

在 Fuse Online 中,自定义连接器由一个或多个连接配置参数、一个或多个连接操作以及每个操作的可选配置参数组成。

以下是开发自定义连接器的任务概述:

  1. 创建 Fuse Online 扩展项目,再选择 Custom Connector 作为扩展类型。
  2. 编写扩展代码。定义基础 Camel 组件、连接器图标、全局连接器属性和连接器操作。

9.3.1. 为自定义连接器编写代码

创建 Fuse Online 扩展项目后,您将根据 Fuse Online 用户为您提供所需功能的描述,编写用于定义自定义连接器元素的代码。表 9.1 “自定义连接器元素” 表显示您在 Fuse 工具中创建的自定义连接器元素如何与 Fuse Online 中的元素对应。

表 9.1. 自定义连接器元素

Fuse 工具元素Fuse Online 元素描述

全局(顶级)属性

连接配置参数

当 Fuse Online 用户从此连接器创建连接时,用户指定这个属性的值作为连接配置的一部分。

操作

连接操作

在 Fuse Online 中,对于从此连接器创建的连接,Fuse Online 用户选择一项操作。

操作中定义的属性

操作配置参数

当 Fuse 在线用户配置连接执行的操作时,Fuse Online 用户将此属性的值指定为操作的一部分。

为 Fuse 在线编写实现自定义连接器的代码:

  1. 在 Editor 视图中打开 syndesis-extension-definition.json 文件,并编写定义全局属性的代码、自定义连接器可以执行的操作以及每个操作的属性。

    每个 全局 属性都对应于 Fuse Online 中的连接配置参数。每个 action 属性都对应于 Fuse 在线连接操作配置参数。在 Fuse 中,当用户选择自定义连接器时,Fuse Online 会提示输入每个连接配置参数的值。自定义连接器可用于使用 OAuth 协议的应用程序。在本例中,请务必为 OAuth 客户端 ID 指定全局属性,以及 OAuth 客户端 secret 的另一个全局属性。Fuse 在线用户需要为从此连接器创建的连接指定这些参数的值。

    每个 连接器操作都 会声明一个基本的 Camel 组件方案。

    New Fuse Online Extension Project 向导提供的示例使用 telegram Camel 组件方案:

    {
      "schemaVersion" : "v1",
      "name" : "Example Fuse Online Extension",
      "extensionId" : "fuse.online.extension.example",
      "version" : "1.0.0",
      "actions" : [ {
        "id" : "io.syndesis:telegram-chat-from-action",
        "name" : "Chat Messages",
        "description" : "Receive all messages sent to the chat bot",
        "descriptor" : {
          "componentScheme" : "telegram",
          "inputDataShape" : {
            "kind" : "none"
          },
          "outputDataShape" : {
            "kind" : "java",
            "type" : "org.apache.camel.component.telegram.model.IncomingMessage"
          },
          "configuredProperties" : {
            "type" : "bots"
          }
        },
        "actionType" : "connector",
        "pattern" : "From"
      }, {
        "id" : "io.syndesis:telegram-chat-to-action",
        "name" : "Send a chat Messages",
        "description" : "Send messages to the chat (through the bot).",
        "descriptor" : {
          "componentScheme" : "telegram",
          "inputDataShape" : {
            "kind" : "java",
            "type" : "java.lang.String"
          },
          "outputDataShape" : {
            "kind" : "none"
          },
          "propertyDefinitionSteps" : [ {
            "description" : "Chat id",
            "name" : "chatId",
            "properties" : {
              "chatId" : {
                "kind" : "parameter",
                "displayName" : "Chat Id",
                "type" : "string",
                "javaType" : "String",
                "description" : "The telegram's Chat Id, if not set will use CamelTelegramChatId from the incoming exchange."
              }
            }
          } ],
          "configuredProperties" : {
            "type" : "bots"
          }
        },
        "actionType" : "connector",
        "pattern" : "To"
      } ],
      "properties" : {
        "authorizationToken" : {
          "kind" : "property",
          "displayName" : "Authorization Token",
          "group" : "security",
          "label" : "security",
          "required" : true,
          "type" : "string",
          "javaType" : "java.lang.String",
          "secret" : true,
          "description" : "Telegram Bot Authorization Token"
        }
      }
    }
  2. 如果自定义连接器需要其他依赖项,请将它们添加到项目的 pom.xml 文件中。依赖项的默认范围是运行时。如果您添加了红帽提供的依赖项,请定义其所提供的范围,例如:

    <dependencies>
        <dependency>
              <groupId>org.apache.camel</groupId>
              <artifactId>camel-telegram</artifactId>
              <scope>provided</scope>
        </dependency>
          </dependencies>

完成编写自定义连接器的代码后,构建 .jar 文件,如 第 9.5 节 “构建 Fuse Online 扩展 JAR 文件” 所述。

9.4. 创建自定义步骤

创建 Fuse Online 扩展项目后,您将编写代码,该代码会根据 Fuse Online 用户提供给您所需功能的描述来定义自定义步骤。在单个扩展中,您可以定义多个自定义步骤,您可以使用 Camel 路由或 Java Bean 定义各个自定义步骤。

9.4.1. 为自定义步骤编写代码

创建 Fuse Online 扩展项目后,您将编写根据 Fuse Online 用户为您提供所需功能的描述来定义自定义步骤的代码。

表 9.2 “自定义步骤元素” 显示了您在 Fuse 工具中创建的自定义步骤的元素如何与 Fuse Online 中的元素对应。

表 9.2. 自定义步骤元素

Fuse 工具元素Fuse Online 元素描述

操作

自定义步骤

在 Fuse Online 中,在用户导入步骤扩展后,在 Choose a step 页面上会显示自定义步骤。

操作中定义的属性

自定义步骤配置参数

在 Fuse 中,当用户选择自定义步骤时,Fuse Online 会提示输入配置参数值。

为 Fuse Online 编写自定义步骤的代码:

  1. 对于基于 Camel 路由的 step,在 extension.xml 文件中,创建满足扩展目的的路由。每个路由的入口点必须与您在 syndesis-extension-definition.json 文件中定义的入口点匹配,如第 2 步所述。

    对于基于 Java 的 bean 步骤,请编辑 java 文件。

  2. syndesis-extension-definition.json 文件中,编写定义操作及其属性的代码。您需要每个入口点的新操作。

    您创建的每个操作都与 Fuse Online 中的自定义步骤对应。您可以为每个操作使用不同的代码类型。也就是说,您可以将 Camel 路由用于一个操作,并使用 Java bean 进行另一个操作。

    每个属性都对应于 Fuse Online 步骤配置参数。在 Fuse 中,当用户选择自定义步骤时,Fuse Online 会提示输入配置参数值。例如,自定义日志步骤可能有一个 level 参数,用于指示发送到日志的信息量。

    以下是包含扩展元数据的 .json 文件的模板,其中包括用户在上传扩展并将其自定义步骤添加到集成后在 Fuse Online 中填充的属性:

    {
      "actions": [
        {
          "actionType": "extension",
          "id": "${actionId}",
          "name": "Action Name",
          "description": "Action Description",
          "tags": [
               "xml"
          ],
          "descriptor": {
            "kind": "ENDPOINT|BEAN|STEP",
            "entrypoint": "direct:${actionId}",
            "inputDataShape": {
              "kind": "any"
            },
            "outputDataShape": {
              "kind": "any"
            },
            "propertyDefinitionSteps": []
          }
        }
      ],
      "tags": [
        "feature",
        "experimental"
      ]
    }
    注意

    此发行版本中会忽略标签。它们会被保留供以后使用。

  3. 要编辑扩展依赖项,请在编辑器中打开 'pom.xml 'file。如果添加依赖项,您必须定义其范围。

完成编写自定义步骤的代码后,构建 .jar 文件,如 第 9.5 节 “构建 Fuse Online 扩展 JAR 文件” 所述。

9.5. 构建 Fuse Online 扩展 JAR 文件

为扩展构建 .jar 文件:

  1. Project Explorer 视图中,右键单击项目。
  2. 在上下文菜单中选择 Run AsMaven clean verify
  3. Console 视图中,您可以监控构建的进度。
  4. 构建完成后,在 Project Explorer 视图中刷新 target 文件夹(选择项目,然后按 F5)。
  5. Project Explorer 视图中,打开 target 文件夹,以查看生成的 .jar 文件:

    .jar 文件的名称遵循 Maven defaults: ${artifactId}-${version}.jar

    例如: custom:step-camel-1.0.0.jar

    .jar 文件定义扩展名、其所需的依赖项及其元数据:扩展 Id、Name、Version、Tags 和 Description。例如:

    {
        "schemaVersion" : "v1",
        "name" : "Example Fuse Online Extension",
        "description" : "Logs a message body with a prefix",
        "extensionId" : "fuse.online.extension.example",
        "version" : "1.0.0",
        "actions" : [ {
            "id" : "Log-body",
            "name" : "Log Body",
            "description" : "A simple xml Body Log with a prefix",
            "descriptor" : {
                "kind" : "ENDPOINT",
                "entrypoint" : "direct:log-xml",
                "resource" : "classpath:META-INF/syndesis/extensions/log-body-action.xml",
                "inputDataShape" : {
                    "kind" : "any"
                },
                "outputDataShape" : {
                    "kind" : "any"
                },
                "propertyDefinitionSteps" : [ {
                    "description" : "Define your Log message",
                    "name" : "Log Body",
                    "properties" : {
                        "prefix" : {
                            "componentProperty" : false,
                            "deprecated" : false,
                            "description" : "The Log body prefix message",
                            "displayName" : "Log Prefix",
                            "javaType" : "String",
                            "kind" : "parameter",
                            "required" : false,
                            "secret" : false,
                            "type" : "string"
                        }
                    }
                } ]
            },
            "tags" : [ "xml" ],
            "actionType" : "step"
        } ],
        "dependencies" : [ {
            "type" : "MAVEN",
            "id" : "io.syndesis.extension:extension-api:jar:1.3.0.fuse-000014"
        } ],
        "extensionType" : "Steps"
    }

9.6. 为 Fuse Online 用户提供 JAR 文件

向 Fuse Online 用户提供以下内容:

  • .jar 文件
  • 描述扩展的文档。对于步骤扩展,请包括步骤扩展中每个操作都要求作为输入或提供输出(用于数据映射)的信息。

在 Fuse Online 中,用户上传 .jar 文件,如 将应用程序与 Fuse Online 集成 所述。

第 10 章 创建新 Camel XML 文件

概述

Apache Camel 将路由存储在包含 camelContext 元素的 XML 文件中。当您创建新的 Fuse 集成项目时,该工具默认提供一个 Apache Camel 上下文(XML)文件作为项目的一部分。

您还可以添加新的 Camel XML 文件,该文件包含预配置所有需要的命名空间,以及模板 camelContext 元素。

流程

在您的项目中添加新 Apache Camel 上下文文件:

  1. 从主菜单中选择 FileNewCamel XML File 来打开 Camel XML 文件 向导,如 图 10.1 “Camel XML 文件向导” 所示。

    图 10.1. Camel XML 文件向导

    Camel XML 文件向导
  2. RouteContainer 中,输入新文件的位置,或者接受默认值。

    您可以点击 Browse…​ button 搜索适当的位置。

    重要

    Spring 框架和 OSGi Blueprint 框架要求将所有 Apache Camel 文件放置在项目 META-INFOSGI-INF 文件夹下的特定位置:

    • Spring - projectName/src/main/resources/META-INF/spring/
    • OSGi Blueprint - projectName/src/main/resources/OSGI-INF/blueprint/
  3. File Name 中,为新上下文文件输入一个名称,或者接受默认值(camelContext.xml)。

    该文件的名称不能包含空格或特殊字符,且必须在 JVM 内唯一。

  4. Framework 中,接受默认设置或选择路由要使用的框架:

    • Spring ALLOW-WWN[default] 用于在 Spring 容器、非OSGi 容器中或作为独立应用程序部署的路由
    • OSGi Blueprint TOKEN-TOKEN 用于要在 OSGi 容器中部署的路由
    • routes TOKEN-的 用于您可以加载并添加到现有的 camelContexts 的路由
  5. Finish

    新上下文文件添加到项目中,并在路由编辑器中打开。

第 11 章 更改 Camel 版本

当您使用 Fuse 工具项目时,您可能需要更改它所使用的 Camel 版本。例如,如果您想要使用较新的 Camel 版本支持的功能,或者想使用社区版本,这将非常有用。

更改项目使用的 Camel 版本:

  1. Project Explorer 中,右键单击您要更改 Camel 版本的项目,然后选择 ConfigureChange Camel Version
  2. Change Camel Version 窗口中,在 Camel Version 字段右侧,单击向下箭头键来显示可用的 Camel 版本。

    要使用 Apache Camel 的社区版本,请输入其版本号,如 2.19.2

  3. 选择或输入您想要的版本并单击" 完成"。

Fuse 工具检查您选择的版本是否可用并由 Fuse 工具支持。如果是 Fuse 工具,则更改 Camel 版本并保存项目的更新 pom.xml 文件。如果您选择的 Camel 版本不可用或不支持,则会收到一条错误消息。

您可以在其 pom.xml 文件中检查项目的 Camel 版本,它位于 < camel.version> 元素中。

第 12 章 导入现有的 Maven 项目

概述

您可能需要导入现有项目,例如,使用 作为模板或开发应用程序的起点。

例如,New Fuse Integration Project 向导会指向以下 Github 存储库,作为示例的源:

流程

导入现有的 Maven 项目:

  1. 选择 FileImportMavenExisting Maven Projects,然后点 Next
  2. 对于 Root Directory,请选择包含下载的示例项目的文件夹。
  3. 在项目列表中,检查您要导入的项目,然后单击 Finish

部分 II. 调试路由上下文

Camel 调试器包含很多用于进行本地调试和远程运行路由上下文的功能:

  • 在路由编辑器中的节点上设置条件和无条件断点
  • 自动启动调试器并切换到 Debug 透视图
  • 与正在运行的路由上下文交互:

    • 在断点之间切换,以快速比较消息实例的变量值
    • 检查并更改感兴趣的变量的值
    • 为 watch 列表添加感兴趣的变量,以便在调试会话中跟踪它们
    • 永久禁用和重新启用断点
    • 在路由上下文运行时以图形方式跟踪消息流
    • 检查控制台日志以跟踪 Camel 和 debugger 操作
注意

在运行 Camel 调试器之前,您必须在路由编辑器的可va中显示的节点上设置断点。然后,您可以在项目的路由上下文 .xml 文件上运行 Camel 调试器,以查找其逻辑错误并加以修复。调用 Camel 调试器以调试模式运行路由上下文,并打开 Debug Perspective

第 13 章 设置断点

概述

要设置断点,必须在路由编辑器的 Design 选项卡中打开项目的路由上下文 .xml 文件。

Camel 调试器支持两种类型的断点:

  • 在调试会话中遇到时,unconditional breakpointsQuery-Querytriggered
  • 只有在调试会话期间满足 breakpoints 的指定条件时,条件 breakpoints将仅触发 breakpoints您的条件
注意

您无法在消费者端点或 otherwise otherwise 节点时 设置断点。

设置无条件断点

使用 设计 选项卡中的 canvas 中显示的路由上下文:

  1. 选择您要在调试会话中检查的节点。
  2. 点击 red dot 图标设置无条件断点。
  3. 对您要设置无条件断点的每个节点重复这些步骤。

设置条件断点

使用 设计 选项卡中的 canvas 中显示的路由上下文:

  1. 选择要在调试会话中检查的状态的节点。
  2. 点击 yellow dot 图标设置条件 breakpoint,并打开 breakpoint…​ 对话框的编辑条件和语言

    debug CondBPCnfg
  3. 单击 Language 下拉菜单,再选择要使用的表达式语言来创建触发断点的条件。

    Fuse 工具支持二十个表达式语言。其中一些语言为创建条件表达式提供变量,而其他语言则不行。

  4. 单击 Variables 以显示所支持语言支持的变量的列表。

    如果显示列表,请按顺序选择一个或多个变量,以创建触发断点的条件。您选择的变量会出现在 Condition 文本框中。

    如果显示 expressLangNoVars ,将表达式直接输入到 Condition 文本框中。

  5. 针对您要在其中设置条件断点的每个节点,重复 [condBpFirst][condBpLast] 的步骤。

禁用断点

您可以临时禁用断点,将其保留下来,稍后再启用它。 resume co 按钮会在调试会话过程中跳过禁用的断点。

要禁用断点,在 canvas 上选择节点并点击其 gray dot 图标。breakpoint 关闭灰色,表示它已被禁用。

要启用禁用的断点,请在 canvas 上选择节点并点击其 green dot 图标。根据 disabled breakpoint 是否为条件或 unconditional,它分别为黄色或红色表示它已被重新启用。

注意

您还可以在调试会话期间禁用和重新启用断点。详情请查看 第 18 章 在运行中的上下文中禁用断点

删除断点

您可以删除单个断点或所有断点。

  • 要删除单个 breakpoints您的路由容器,请选择您要删除的断点的节点,并点击其 delete bp 图标。
  • 要删除特定路由在特定路由[5&6] -right-click the target route 的容器的 breakpoints,然后选择 gray dot Delete all breakpoints
  • 要删除所有 routes内容的 breakpoints,请右键单击 canvas,然后选择 gray dot Delete all breakpoints

第 14 章 运行 Camel Debugger

您可以在本地运行路由上下文上运行 Camel 调试器。

注意
  • 不再支持远程调试。要进行远程调试,您必须配置 Jolokia,并通过 Jolokia 创建特定的 JMX 连接。
  • 如果您的项目包含 Java 代码,您可以使用标准 Eclipse Java 调试工具进行调试。

您必须在路由上下文文件中设置断点,然后才能启动 Camel 调试器。

流程

  1. Project Explorer 视图中,选择您要调试的路由上下文文件。
  2. 右键单击所选文件以打开上下文菜单,然后选择 Debug AsLocal Camel Context

    Fuse 工具构建 Camel 路由,启动 Apache Camel,启动路由上下文,启用 JMX,在路由上下文中启动路由,将断点添加到节点,并启用 Camel 调试器。

    Camel 调试器会在第一个断点命中(收到消息)时暂停执行路由上下文,并提示您指明是否打开 Debug 透视图。

    DBCnfrmSwitchToDBView
  3. 单击 Yes 以打开 Debug 透视图。

    Debug 透视图打开,并在运行路由上下文中遇到的第一个断点暂停路由上下文。

    重要

    为调试自动恢复、移动到下一个断点或路由上下文结束后,会持有最多五分钟的时间。

    openDBPerspective
    注意

    要查看控制台输出,请在切换视角时打开 Console 视图。

    注意

    默认情况下,Debug 透视图显示 Outline 视图,它提供了在运行路由上下文中的独立路由间切换的方法。如果您的路由上下文包含单一路由,则关闭 Outline 视图可释放空间以扩展其他视图,从而更轻松地访问并检查调试器输出。

通过路由上下文监控消息交换

stepover co (Step Over)可跳到路由上下文中的下一个执行节点。点 resume co (恢复)在路由上下文中的下一个活跃断点继续执行。

debug StateChange

第 15 章 停止 Camel Debugger

概述

要停止 Camel 调试器,在调试会话终止后点菜单栏上的 Terminate button 。否则,点 Terminate button 两次:一次终止当前运行的节点线程,一次终止 Camel 上下文 线程(在 Debug 视图中显示)。

+

注意

终止 Camel 调试器也会终止控制台,但不会清除其输出。要清除输出,点 Console 视图的菜单栏上的 clear co (Clear Console )。

关闭 Camel 调试器

在对项目进行调试后,您可能需要关闭 Debug 透视图,为您的工作台提供更多空间。

要做到这一点,在工具栏中右键点击 Debug perspective icon ,然后选择 Close

第 16 章 更改变量值

概述

当 Camel 调试器到达断点时,Variables 视图会显示在路由上下文中所有可用变量的值。有些变量可以被编辑,允许您更改其值。这可让您了解应用程序如何处理程序状态的变化。

注意

并非所有变量都可编辑。可编辑变量的上下文菜单显示 Change Value…​ 选项。

流程

更改变量的值:

  1. 如有必要,启动调试器。请参阅 第 14 章 运行 Camel Debugger
  2. Variables 视图中,选择一个您要更改的值的变量,然后单击其 Value 字段。

    editBPvars1

    变量的 value 字段将转化为轻量级蓝色,表示它处于编辑模式。

    注意

    或者,您可以右键单击变量以打开其上下文菜单,然后选择 Change Value…​ 来编辑其值。

  3. 输入新值,然后单击 Enter

    Console 视图显示一个 INFO 级别日志条目,它没有改变的值(例如,在节点 to1 时,node to1 的 Breakpoint is update message header on exchangeId: ID-dhcp-97-16-bos-redhat-com-52574-1417298894070-0-2 with header: Destination and value: UNITED KINGDOM)。

  4. 继续逐步浏览断点,并检查消息是否按照预期处理。每个步骤都检查 Debug 视图、Variables 视图和 控制台输出

第 17 章 在 Watch 列表中添加变量

概述

通过在监视列表中添加变量,您可以关注特定变量来查看它们的值在通过路由上下文流时是否如预期变化。

流程

在 watch 列表中添加一个变量:

  1. 如有必要,启动调试器。请参阅 第 14 章 运行 Camel Debugger
  2. Variables 视图中,右键单击您要跟踪的变量以打开上下文菜单。

    UGaddVarWatchList
  3. 选择 Watch

    断点视图旁边将打开一个新视图 表达式Expressions 视图显示被监视的变量的名称及其当前值,例如:

    UGwatchList
  4. 重复 [watch1][watch2] 以在 watch 列表中添加额外的变量。

    注意

    您添加的变量保留在监视列表中,直到您删除它们。要停止查看变量,请在列表中右键单击以打开上下文菜单,然后单击 Remove

  5. Expressions 视图打开时,请逐步跟踪路由上下文,以跟踪监视列表中各个变量的值在路由中的各个步骤发生变化时如何。

第 18 章 在运行中的上下文中禁用断点

概述

您可以在 Breakpoints 视图的运行路由上下文中禁用和重新启用断点。

当禁用断点时, resume co 按钮会导致调试器在调试会话中跳过。

在 Breakpoints 视图中禁用和启用断点

Breakpoints 视图将打开,并启用了所有 set breakpoints。

BPviewEnabled

要禁用断点,请清除其复选框。

BPviewDisabled

对于您禁用的每个断点,Console 视图会显示一个 INFO 级别日志条目,指出它已被禁用(例如,删除 breakpoint log2)。同样,对于重新启用的每个断点,Console 视图会显示一个 INFO 级别日志条目,指出它已被启用(例如,添加 breakpoint log2)。

注意

要重新启用禁用的断点,请单击其复选框。Console 视图显示一个 INFO 级别日志条目,指出 breakpoint 已添加到所选节点。

部分 III. 监控和测试应用程序

JMX Navigator 视图提供了多种监控和测试 Fuse 应用程序的方法。

注意

您还可以使用 Fuse 控制台监控 Fuse 应用程序,如管理 Fuse 中所述

第 19 章 JMX Navigator

JMX Navigator 视图显示在 图 19.1 “JMX Navigator 视图” 中,显示应用程序中运行的所有进程,并且它驱动了与监控和测试功能的所有交互。Fuse 集成 透视图的其他区域进行相应调整,以显示与 JMX Navigator 视图中选择的节点相关的信息。在 JMX Navigator 视图中,其上下文菜单提供了激活路由追踪并添加 JMS 目的地所需的命令。

图 19.1. JMX Navigator 视图

JMX Navigator 视图

默认情况下,JMX Navigator 视图会发现本地机器上运行的所有 JMX 服务器,并将它们列在以下类别下:

  • 本地进程
  • 服务器连接
  • 用户定义的连接
注意

您可以使用服务器的 JMX URL 添加其他 JMX 服务器。详情请查看 第 19.2 节 “添加 JMX 服务器”

19.1. 在 JMX 中查看进程

概述

JMX Navigator 视图列出了一系列树中的所有已知进程。每个树的 root 都是 JMX 服务器。

列表中的第一个树是特殊的 Local Processes 树,其中包含本地机器上运行的所有 JMX 服务器。您必须连接到其中一个 JMX 服务器以查看它所包含的进程。

查看本地 JMX 服务器中的进程

查看本地 JMX 服务器中的进程信息:

  1. JMX Navigator 视图中,展开 本地进程
  2. " 本地进程"下,双击其中一个顶级条目来与其连接。
  3. 点击条目旁边的 expansion arrow 图标显示 JVM 中运行的组件列表。

在备用 JMX 服务器中查看进程

查看另一个 JMX 服务器中的进程信息:

  1. 第 19.2 节 “添加 JMX 服务器” JMX Navigator 视图的 JMX 服务器.
  2. JMX Navigator 视图中,使用该条目旁边的 expansion arrow 图标展开服务器条目。这将显示 JVM 中运行的 JMX 服务器组件的列表。

19.2. 添加 JMX 服务器

概述

JMX Navigator 视图中,在树的本地进程分支下,您可以看到所有本地 JMX 服务器的列表。您可能需要连接到特定的 JMX 服务器,以查看部署在其他机器上的组件。

要添加 JMX 服务器,您必须知道要添加的服务器的 JMX URL。

流程

JMX Navigator 视图中添加 JMX 服务器:

  1. JMX Navigator 视图中,单击 New Connection new server wiz
  2. 在创建新 JMX 连接 向导中,选择 Default JMX Connection
  3. 点击 Next
  4. 选择 Advanced 选项卡。
  5. Name 字段中输入 JMX 服务器的名称。

    名称可以是任意字符串。它用于在 JMX Navigator 树中标记条目。

  6. JMX URL 字段中,输入服务器的 JMX URL。
  7. 如果 JMX 服务器需要身份验证,请在 UsernamePassword 字段中输入您的用户名和密码。
  8. Finish

    新的 JMX 服务器在 User-Defined Connections 树中显示为分支。

第 20 章 查看组件的 JMX 统计信息

概述

工具收集 Fuse 组件报告的所有 JMX 统计,并在 Properties 视图中显示它们。这种统计信息可以让您了解集成应用程序中的情况。

JMX 统计数据分为三个类别: 属性 处理器 和配置文件

流程

查看 Fuse 组件的统计信息:

  1. JMX Navigator 视图中,找到该组件的节点。

    您可能需要扩展树上的节点来查找低级别组件。

  2. 选择您要查看的统计信息的 Fuse 组件的节点。
  3. 打开 Properties 视图。
  4. Properties 页面显示所选组件的 JMX 属性:

    JMXchoiceNodeProps
  5. Processors 检查所选组件的交换指标:

    JMXchoiceNodeProcs
  6. Profile 检查所选节点及其子节点的消息指标:

    JMXchoiceNodeProfile

第 21 章 浏览消息

概述

在分布式环境中调试应用的一个关键工具可以看到所有存储在 JMS 目的地和应用中的路由端点的消息。该工具可浏览以下内容:

  • JMS 目的地
  • JMS 路由端点
  • Apache Camel 路由端点
  • SEDA 路由端点
  • 浏览路由端点
  • 模拟路由端点
  • VM 路由端点
  • 数据收集路由端点

流程

浏览信息:

  1. JMX Navigator 视图中,选择您要浏览的 JMS 目标或端点。

    消息列表会出现在 Messages View 中。

  2. Messages View 中,选择要检查的单个信息。

    browseMsgView

    Properties 视图中显示消息详情和内容:

    browseMsgPropertiesV

第 22 章 追踪路由

调试路由通常涉及解决两个问题之一:

  • 信息被不当转换。
  • 消息未能到达其目标端点。

通过路由跟踪一个或多个测试消息,是发现此类问题源的最简单方法。

通过工具的路由跟踪功能,您可以监控消息通过路由完成的路径,并查看消息从处理器传递到处理器时如何转换消息。

图表 视图显示路由的图形表示,它可让您看到消息采用的路径。对于路由中的每个处理器,它还显示平均处理时间(以毫秒为单位)、处理自路由启动以来处理的所有消息以及从路由启动启动以来处理的消息数量。

Messages View 显示 JMX Navigator 树中选定的 JMS 目的地或路由端点处理的消息。在 Messages View 中选择单个消息追踪会显示 Properties 视图中消息的完整详情和内容,并突出显示 Diagram View 中的关联 poding 节点。

通过路由跟踪消息涉及以下步骤:

22.1. 创建用于路由追踪的测试消息

概述

路由追踪可用于任何种类的消息结构。Fuse Message 向导会创建一个空的 .xml 消息,将消息构建完整到您。

注意

如果要存储测试消息的文件夹不存在,则需要在创建消息前创建它。

创建新文件夹以存储测试消息

创建新文件夹:

  1. Project Explorer 视图中,右键单击项目 root 以打开上下文菜单。
  2. 选择 NewFolder 以打开 New Folder 向导。

    项目根显示在 Enter 中,或者选择父文件夹 字段。

  3. 展开项目层次结构的图形表示的节点,然后选择您要成为父文件夹的节点。
  4. Folder name 字段中输入新文件夹的名称。
  5. Finish

    新文件夹显示在所选父文件夹下的 Project Explorer 视图中。

    注意

    如果没有显示新文件夹,请右键单击父文件夹并选择 Refresh

创建测试消息

创建测试信息:

  1. Project Explorer 视图中,右键单击项目以打开上下文菜单。
  2. 选择 NewFuse Message 以打开 New File 向导。
  3. 展开项目层次结构的图形表示的节点,然后选择您要在其中存储新测试消息的文件夹。
  4. File name 字段中输入消息的名称,或者输入默认(message.xml)。
  5. Finish

    新消息在 XML 编辑器中打开。

  6. 输入消息内容,即 body 和 header 文本。

    注意

    根据您输入的标头文本,您可能会看到 文档 中引用的警告、No grammar 约束(DTD 或 XML Schema)。您可以安全地忽略这个警告。

22.2. 激活路由追踪

概述

您必须激活路由上下文的路由追踪,然后才能通过该路由上下文跟踪消息。

流程

要在路由上下文中激活追踪:

  1. JMX Navigator 视图中,选择您要在其上开始追踪的正在运行的路由上下文。

    注意

    您可以在上下文中选择任何路由,以便在整个上下文中启动追踪。

  2. 右键单击选定的路由上下文打开上下文菜单,然后选择 Start Tracing 来启动 trace。

    如果在上下文菜单中启用了 Stop Tracing Context,则追踪已经激活。

22.3. 通过路由上下文跟踪消息

概述

查看路由上下文中发生情况的最佳方式是在每次停止时观察消息发生的情况。该工具提供了一种将消息丢弃至正在运行的路由上下文的机制,并跟踪消息通过的路径。

流程

通过路由上下文跟踪信息:

  1. 创建一个或多个测试信息,如 第 22.1 节 “创建用于路由追踪的测试消息” 所述。
  2. Project Explorer 视图中,右键单击项目的 Camel 上下文文件,以打开上下文菜单,然后选择 Run AsLocal Camel Context (不含 Tests)。

    注意

    不要以 Local Camel 上下文 运行,除非您已经为该项目创建了全面的 JUnit 测试。

  3. 为正在运行的路由上下文激活追踪,如 第 22.2 节 “激活路由追踪” 所述。
  4. 将其中一个测试消息从 Project Explorer 视图拖到 JMX Navigator 视图中的路由上下文起点。
  5. JMX Navigator 视图中,选择正在跟踪的路由上下文。

    工具会填充 Messages View,其中的消息实例代表 traced 上下文中各个阶段的消息实例。

    图表视图 显示所选路由上下文的图形表示。

  6. Messages View 中,选择其中一个消息实例。

    Properties 视图显示消息实例的详细信息和内容。

    图表视图 中,突出显示与所选消息实例对应的路由步骤。如果路由步骤是处理步骤,工具会标记退出路径,并带有计时和处理指标。

  7. 根据需要重复此生产。

22.4. 取消激活路由追踪

概述

在路由上下文中完成对路由进行调试后,您应该取消激活追踪。

重要

取消激活追踪功能会停止追踪并清空路由上下文中所有路由的 trace 数据。这意味着您无法查看任何过去的追踪会话。

流程

停止追踪路由上下文:

  1. JMX Navigator 视图中,选择您要停用追踪的正在运行的路由上下文。

    注意

    您可以选择上下文中的任何路由,以停止针对上下文追踪。

  2. 右键单击选定的路由上下文打开上下文菜单,然后选择 Stop Tracing Context

    如果上下文菜单中显示 Start Tracing,则不会为路由上下文激活追踪。

第 23 章 管理 JMS 目的地

JMX Navigator 视图允许您在红帽 Fuse 的运行实例中添加或删除 JMS 目标。

重要

这些更改不会在代理重启后保留。

23.1. 添加 JMS 目的地

概述

在测试新场景时,可以方便地向代理添加新的 JMS 目标。

流程

将 JMS 目标添加到代理中:

  1. JMX Navigator 视图中,在您要为其添加目的地的代理节点下,选择 Queues 子级或主题子。
  2. 右键单击所选节点以打开上下文菜单,然后选择 Create QueueCreate Topic
  3. Create QueueCreate Topic 对话框中,为新目的地输入一个名称。
  4. 点击 OK
  5. 右键单击 QueuesTopics 子级,然后选择 Refresh

    新目的地会出现在 Queues child 或 Topics 子级下的 JMX Navigator 视图中。

23.2. 删除 JMS 目的地

概述

在测试故障转移方案或其他涉及处理故障的场景时,能够轻松地删除 JMS 目标会很有帮助。

流程

删除 JMS 目标:

  1. JMX Navigator 视图的 Queues 子或主题子下,选择您要删除的 JMS 目标。
  2. 右键单击选定的目标以打开上下文菜单,然后选择 Delete Queue/Topic

第 24 章 管理路由端点

JMX Navigator 视图可让您添加或删除路由端点。

重要

这些更改在路由上下文重启后不会保留。

24.1. 添加路由端点

概述

在测试新场景时,您可能想要在路由上下文中添加新端点。

流程

在路由上下文中添加端点:

  1. JMX Navigator 视图的路由上下文节点下,选择您要在其中添加端点的 Endpoints 子级。
  2. 右键单击所选节点以打开上下文菜单,然后选择 Create Endpoint
  3. Create Endpoint 对话框中,输入定义新端点的 URL,例如 file://target/messages/validOrders
  4. 点击 OK
  5. 右键单击路由上下文节点,然后选择 Refresh

    新目的地显示在 Endpoints 节点下的 JMX Navigator 视图,它位于与端点类型对应的文件夹中,例如文件。

24.2. 删除路由端点

概述

测试故障转移场景或其他涉及处理故障的场景时,可以从路由上下文中删除端点会很有帮助。

流程

删除路由端点:

  1. JMX Navigator 视图中,选择您要删除的端点。
  2. 右键单击选定的端点以打开上下文菜单,然后选择 Delete Endpoint

    工具会删除端点。

  3. 要从视图中删除已删除的端点,请右键单击 Endpoints 节点,然后选择 Refresh

    端点从 JMX Navigator 视图消失。

    注意

    要从 Project Explorer 视图中删除端点的节点而不重新运行项目,您需要通过右键单击节点并选择 Delete 来显式删除它。要从视图中移除,请刷新项目显示。

第 25 章 编辑运行的路由

概述

您可以在不更改项目的路由上下文的情况下试验对正在运行的路由的更改。

要做到这一点:

  • JMX Navigator 视图中,在正在运行的路由上下文中启用 Edit Routes 选项。

    这会在路由编辑器中打开 it-memory model of itsandboxed- Remote CamelContext:<camelContextId > 方式。

  • 在路由编辑器中,对路由上下文的内存模型进行更改。同时,您可以在相关节点上设置断点以使用 Camel 调试器及其所有功能。

    您可以编辑内存模型来添加、删除或重新排列节点;用于添加或删除现有节点的属性;以及修改现有节点上设置的属性值。您必须保存对内存模型的更改,以更新正在运行的上下文,并在设置了断点时看到 Debug 透视图的结果。

  • JMX Navigator 视图中,丢弃运行路由上下文上的消息,或者等待消息从计时器、ActiveMQ、文件或其他持续输入节点到达。
  • Debug 透视图中,评估结果并使用 Camel 调试器深入了解您的路由上下文。

修改正在运行的路由并评估结果

  1. JMX Navigator 视图中,选择包含您要编辑的路由上下文。
  2. 右键单击选定的路由上下文打开上下文菜单,然后选择 Edit Routes

    路由编辑器会打开路由上下文的内存中模型,Remote CamelContext:<contextId& gt;,并在生产环境中显示所有路由,例如:

    CanvasPalette
    注意

    <contextId > 是项目路由上下文 . .xml 文件中的 camelContext 元素的 ID。在本例中,基于 FuseContent Based Router 内置模板,ID 为 cbr-example-context

  3. 编辑 第 2 章 在路由编辑器中编辑路由上下文 中描述的路由,然后选择 FileSave 以保存您对内存模型所做的更改并更新正在运行的路由上下文。
  4. 第 13 章 设置断点 所述,在相关节点上设置断点。
  5. JMX Navigator 视图中,在正在运行的路由上下文输入节点上丢弃消息。

    如果您的项目不包含测试信息,您可以创建它们,如 第 22.1 节 “创建用于路由追踪的测试消息” 所述。

  6. 单击 Yes 以确认切换到 Debug 透视图。
  7. 在 Camel 调试器中,通过断点(请参阅 第 14 章 运行 Camel Debugger)检查您生成的结果。

    Camel 调试器在 Edit Routes 模式中的行为与普通的调试模式相同,因此您可以在传递路由上下文时使用 Camel 调试器的功能。

    注意

    当消息到达路由上下文的末尾时,会暂停调试器。要继续调试,请切回到 Fuse 集成 透视图,并在 JMX Navigator 视图中的输入节点上丢弃另一条消息。每次这样做时,工具都会要求您确认切换到 Debug 透视图。

    注意

    在路由编辑会话中,可能会丢失与正在运行的路由上下文的连接。如果发生这种情况,在 JMX Navigator 视图中,您会看到类似如下的内容: Local Processesmaven[xxxx][Disconnected]。要继续会话,您必须重新连接到正在运行的路由上下文,在 JMX Navigator 视图中选择它,然后重新选择 编辑路由

终止路由编辑会话

  1. Debug 透视图的 Debug 视图中,选择 Remote Camel Debug - camelContext--<contextId>--xxxxxxxxxxxxxxxxxxxxxxx.xml [Remote Camel Context] 线程,然后点击 Terminate button 来终止调试会话。
  2. Console 视图的菜单栏中,点 Terminate button 终止路由上下文。
  3. 如果要清除控制台输出,点 Console 视图的菜单栏上的 clear co
  4. 切换到 Fuse 集成 透视图,并在路由编辑器中点 远程 CamelContext:<contextId& gt; 选项卡来关闭路由上下文文件的内存中模型。 close

第 26 章 管理路由上下文

JMX Navigator 视图可让您挂起并恢复路由上下文。

26.1. 挂起路由上下文的操作

概述

该工具允许您在 JMX Navigator 视图中暂停路由上下文的操作。挂起上下文操作会正常关闭上下文中的所有路由,但将其加载到内存中,以便他们可以恢复操作。

流程

挂起路由上下文的操作:

  1. JMX Navigator 视图中,展开项目的 Camel 上下文 节点,然后选择您要暂停的操作的路由上下文。
  2. 右键单击选定的路由上下文以打开上下文菜单,然后选择 Suspend Camel 上下文

    注意

    如果 Resume Camel 上下文出现在上下文菜单中,则已暂停上下文的操作。

26.2. 恢复路由上下文的操作

概述

工具可让您在 JMX Navigator 视图中恢复挂起的路由上下文的操作。恢复上下文的操作会重启其中的所有路由,以便它们能够处理消息。

流程

恢复路由上下文的操作:

  1. JMX Navigator 视图中,展开项目的 Camel 上下文 节点,然后选择您要恢复的操作的路由上下文。
  2. 右键单击选定的上下文打开上下文菜单,然后选择" 恢复 Camel 上下文 "。

    注意

    如果 Suspend Camel 上下文出现在上下文菜单中,上下文及其路由正在运行。

部分 IV. 将应用程序发布到容器

要将 Fuse 集成项目发布到服务器容器,您必须首先将服务器及其运行定义添加到工具 的服务器 列表中。然后,您可以将项目分配给服务器运行时,并为它设置发布选项。

第 27 章 管理服务器

注意

有关如何将 Camel 项目发布到 Red Hat Fuse 的步骤,请参考 第 28 章 将 Fuse 集成项目发布到服务器

27.1. 添加服务器

概述

对于用于管理服务器的工具,您需要将服务器添加到服务器 列表中。添加后,服务器会显示在 服务器 视图中,您可以连接到该服务器并发布您的 Fuse 集成项目。

注意

如果添加 Red Hat Fuse 服务器,建议您编辑 installDir/etc/users.properties 文件,并以 user=password,role 的形式添加用户信息,以便工具建立与服务器的 SSH 连接。

流程

在服务器视图中添加新 服务器的方法

  • Servers 视图中,点 No servers are available。点击此链接创建新 server…​

    注意

    仅当没有定义任何服务器时,此链接才会出现在 Servers 视图中。如果您在首次创建项目时定义和添加服务器,则 Servers 视图会显示该服务器。

  • Servers 视图中,右键单击以打开上下文菜单,然后选择 NewServer
  • 在菜单栏中,选择 FileNewOtherServerServer

Define a New Server 对话框中,添加新服务器:

  1. 展开 Red Hat JBoss Middleware 节点,公开可用服务器选项列表:

    服务器列表
  2. 点您要添加的服务器。
  3. 服务器的主机名 字段中,接受默认值(localhost)。

    注意

    localhost 的地址为 0.0.0.0

  4. Server name 字段中,接受默认值,或者输入运行时服务器的名称。
  5. 对于 Server 运行时环境,接受默认设置或点击 Add 打开服务器的运行时定义页面:

    添加服务器
    注意

    如果机器上还没有安装该服务器,您可以点击 Download and install runtime…​ 并遵循站点的下载说明来安装它。根据网站,您可能需要提供有效的凭证,然后才能继续下载过程。

  6. 接受安装 名称 的默认设置。
  7. Home Directory 字段中,输入安装服务器运行时的路径,或者点击 Browse 找到并选择它。
  8. Execution Environment 旁边,从下拉菜单中选择 runtime JRE。

    如果想要的版本没有出现在列表中,点 Environments 并从出现的列表中选择版本。您选择的 JRE 版本必须安装在您的机器上。

    注意

    有关所需 Java 版本,请参阅 Red Hat Fuse 支持的配置

  9. Alternate JRE 选项保留原样。
  10. Next 保存服务器的运行时定义并打开其配置 详情页面

    UGJBFserverConfigDetails
  11. 接受默认 SSH 端口 (8101)

    运行时使用 SSH 端口连接到服务器的 Karaf shell。如果设置此默认值不正确,您可以通过在服务器的 installDir/etc/org.apache.karaf.shell.cfg 文件中找到正确的端口号。

  12. User Name 字段中输入用于登录到服务器的名称。

    对于 Red Hat Fuse,这是存储在 Red Hat Fuse installDir/etc/users.properties 文件中的用户名。

    注意

    如果 /etc/users.properties 文件中已激活默认用户(绑定),工具会自动填充 User NamePassword 字段,如 [servCnfigDetails] 所示。

    如果还没有设置用户,您可以使用用户名 user=password,role (如 joe=secret,Administrator)添加该文件,或使用 karaf jaas 命令设置它:

    • JAAS:realms TOKEN-将 list realms
    • JAAS:manage --index 1 keystore- insufficientto 编辑第一个(server)域
    • JAAS:useradd <username&gt; <password>
    • JAAS:roleadd <username> Administrator TOKEN-TOKENto 指定新用户的角色
    • JAAS:update ALLOW-将域更新为使用新的用户信息

    如果已经为服务器选择了 jaas 域,您可以通过发出 JBossFuse:karaf@root>jaas:users 命令来发现用户名。

  13. Password 字段中,输入 User Name 以登录服务器所需的密码。
  14. Finish 保存服务器的配置详情。

    服务器运行时会出现在 Servers 视图中。

    扩展服务器节点会公开服务器的 JMX 节点:

    UGnewServrInstalledExpand

27.2. 启动服务器

概述

当您启动配置的服务器时,该工具会在 Terminal 视图中打开服务器的远程管理控制台。这可让您在测试应用程序时轻松管理容器。

流程

启动服务器:

  1. Servers 视图中,选择您要启动的服务器。
  2. run button

    • Console 视图会打开并显示一条消息,要求您在容器启动时等待,例如:

      UGservrStartConsoleV
      注意

      如果您没有正确配置用户名和密码打开远程控制台,则会打开一个对话框,要求您输入正确的凭证。请参阅 第 27.1 节 “添加服务器”

    • 容器启动后,Terminal 视图将打开,以显示容器的管理控制台。
    • 运行的服务器会出现在 Servers 视图中:

      UGservrStartServrsView
    • 运行的服务器也会出现在服务器连接下的 JMX Navigator 视图中

      UGservStartJMXNavView
      注意

      如果服务器与工具在同一计算机上运行,则服务器在 Local Processes 下也有一个条目。

27.3. 连接到正在运行的服务器

概述

启动配置的服务器后,它会显示在服务器视图中,并在 Server Connections 节点下的 JMX Navigator 视图中显示。您可能需要扩展 Server Connections 节点来查看服务器。

要在运行的服务器上发布并测试 Fuse 项目应用程序,您必须首先连接到它。您可以在服务器视图中或 JMX Navigat or 视图中连接到正在运行的服务器。

注意

服务器 视图和 JMX Navigator 视图与服务器连接有关同步。也就是说,在 Servers 视图中连接到服务器也会以 JMX Navigator 视图进行连接,反之亦然。

在 Servers 视图中连接到正在运行的服务器

  1. Servers 视图中,扩展服务器运行时以公开其 JMX[Disconnected] 节点。
  2. 双击 JMX[Disconnected] 节点:

    UGservrStartServrsView

在 JMX Navigator 视图中连接到正在运行的服务器

  1. JMX Navigator 视图的 Server Connections 节点下,选择您要连接到的服务器。
  2. 双击所选服务器:

    UGservConnectJMXNav

查看在连接的服务器上安装的捆绑包

  1. Servers 视图或 JMX Navigator 视图中,展开服务器运行时树以公开 Bundles 节点,然后选择它。
  2. 该工具使用在服务器上安装的捆绑包列表填充 Properties 视图:

    UGservBundles

    如果使用 Properties 视图的搜索工具,您可以通过其 Symbolic Name 或其 标识符 搜索捆绑包(如果您知道)。当您输入符号名称或标识符时,列表更新只会显示与当前搜索字符串匹配的捆绑包。

    注意

    另外,您还可以在 Terminal 视图中发出 osgi:list 命令,以查看 Red Hat Fuse 服务器运行时已安装捆绑包的生成列表。该工具对 osgi:list 命令显示的 OSGi 捆绑包使用不同的命名方案。

    在项目的 pom.xml 文件的 < build > 部分,您可以找到 maven-bundle-plugin 条目中列出的捆绑包符号名称及其捆绑包名称(OSGi)。如需了解更多详细信息,请参阅 “验证项目是否已发布到服务器”一节

27.4. 断开与服务器的连接

概述

完成测试应用后,您可以在不停止的情况下与服务器断开连接。

注意

服务器 视图和 JMX Navigator 视图与服务器连接有关同步。也就是说,在 Servers 视图中断开与服务器的连接也会在 JMX Navigator 视图中断开,反之亦然。

在 Servers 视图中断开与服务器的连接

  1. Servers 视图中,扩展服务器运行时以公开其 JMX[Connected] 节点。
  2. 右键单击 JMX[Connected] 节点以打开上下文菜单,然后选择 Disconnect

    Disconnect

在 JMX Navigator 视图中断开与服务器的连接

  1. JMX Navigator 视图中,在"服务器连接"下选择您要断开连接的服务器。
  2. 右键单击所选服务器以打开上下文菜单,然后选择 Disconnect

    断开 JMX

27.5. 停止服务器

概述

您可以在 Servers 视图中或在 Terminal 视图中的远程控制台关闭服务器。

使用 Servers 视图

停止服务器:

  1. Servers 视图中,选择您要停止的服务器。
  2. stop button

使用远程控制台

停止服务器:

  1. 打开托管服务器远程控制台的 Terminal 视图。
  2. 按: CTRL+D

27.6. 删除服务器

概述

完成配置的服务器或者您错误配置服务器后,您可以删除该服务器及其配置。

首先,从服务器视图或从 JMX Navigator 视图删除 服务器。然后,删除服务器的配置。

删除服务器

  1. Servers 视图中,右键单击要删除的服务器以打开上下文菜单。
  2. 选择 Delete
  3. 点击 OK

删除服务器的配置

在 Linux 和 Windows 机器上,选择 窗口Preferences

  1. 展开 Server 文件夹,然后选择 Runtime Environments 以打开 Server Runtime Environments 页面。
  2. 从列表中,选择您之前从服务器视图中删除 的服务器 运行时环境,然后单击 Remove
  3. 点击 OK

第 28 章 将 Fuse 集成项目发布到服务器

您可以使用 Eclipse 发布机制将 Fuse 集成项目部署到服务器运行时。要做到这一点,您必须已定义服务器,并在 Fuse Integration 视角中将服务器添加到服务器视图。有关逐步演示,请参阅。

概述

您可以设置支持的服务器来自动发布分配的 Fuse 项目,或者仅在手动调用发布命令时发布它们。

添加到 Servers 视图中的每个服务器运行时都有自己的 Overview 页面,其中包含其配置、连接和发布详情:

UGservRuntimeOverviewTab

您可能需要扩展 Publishing,以公开服务器运行时发布选项和默认设置:

  • 切勿发布自动分发 选项才能手动发布项目。

    重要

    您必须禁用 If server started,在服务器的 Add 和 Remove 页面中发布立即更改 选项(详情请参阅 “手动发布 Fuse 项目”一节

  • 当您保存更改 时,自动发布资源,在资源更改时 ,启用此选项自动发布或重新发布 Fuse 项目。发布项目的速度取决于 发布间隔 (默认为 15 秒)。
  • 当资源发生变化时,在构建事件 的 方式(在构建事件 )后自动发布,与 Automatically publish 相同。

在资源更改时自动发布 Fuse 项目

服务器运行时的默认发布选项是 自动发布,当资源改变时

  1. 如有必要,启动您要向其发布 Fuse 项目的服务器运行时。详情请查看 第 27.2 节 “启动服务器”
  2. Servers 视图中,双击服务器运行时以打开其 Overview 页面。
  3. 展开 Publishing,然后在 资源更改时选择 Automatically publish
  4. 要增加或减少发布周期之间的间隔,请根据情况点击 发布间隔(以秒为单位) 旁的单选按钮。
  5. Servers 视图中,右键单击服务器运行时以打开上下文菜单,然后选择" 添加和删除 "。

    UGservAddRemove1

    可供发布的所有资源都显示在 Available 列中。

  6. 将资源(本例中为 CBRroute Fuse 项目)分配给服务器运行时:

    • 双击它,或者
    • 选择它,然后单击添加

      所选资源进入 Configured 列:

      UGservAddRemove2

      在这个阶段,分配的资源实际上会被发布的时间取决于服务器运行时是否正在运行以及 Publishing 间隔 设置。但是,如果服务器停止,您必须在启动服务器后手动发布项目(详情请参阅 “手动发布 Fuse 项目”一节)。

  7. If server started, publish changes immediately 选项来启用它:

    UGservAddRemove3

    此选项可确保在点击 Finish 后立即发布配置的项目。当服务器运行时 概述 页面中 资源更改选项时,Automatically publish 可确保在每次保存对本地项目所做的更改时重新发布配置的项目。

  8. Finish

    该项目会出现在服务器运行时节点的 Servers 视图中,并且服务器运行时状态报告 [Started,Publishing…​]

    发布完成后,服务器运行时和项目报告的状态为 [Started,Synchronized]:

    UGservPublishSynched
    注意

    对于服务器运行时,Synchronized 表示服务器上的所有已发布的资源都与其本地对应的资源相同。对于已发布的资源,Synchronized 表示它与其本地计数器部分相同。

手动发布 Fuse 项目

  1. 如有必要,启动您要向其发布 Fuse 项目的服务器运行时。详情请查看 第 27.2 节 “启动服务器”
  2. Servers 视图中,双击服务器运行时以打开其 Overview 页面。
  3. 展开 Publishing,然后选择 Never publish automatically
  4. FileSave 保存发布选项更改。
  5. 如果 Fuse 项目已分配给服务器运行时,请确保禁用这个选项: 如果服务器 启动,则立即发布更改

    1. Servers 视图中,右键单击服务器运行时以打开上下文菜单。
    2. Add and Remove…​ 打开服务器的 Add and Remove 页。
    3. 如果启用了以下选项,请将其禁用: 如果服务器启动,则立即发布更改
    4. 跳至 [Finish]
  6. 如果 Fuse 项目尚未分配给服务器运行时,请现在分配:

    1. [startAssignResource] 中通过 [stopAssignResource] 遵循 “在资源更改时自动发布 Fuse 项目”一节
    2. 不要启用 if server started,发布立即更改 选项。
  7. 单击 Finish

    该项目会出现在服务器运行时节点下的 Servers 视图中,服务器运行时状态报告 [Started]:

    UGservPublishSynched
  8. Servers 视图中,右键单击项目的节点。在本例中,选择 CBRroute Fuse 项目以打开上下文菜单:

    UGassgnProjSrvViewCntxtMnu
  9. 选择 Full Publish

    在发布操作期间,服务器运行时和项目报告 [Started,Republish] 的状态。

    发布完成后,服务器运行时和项目报告 [Started,Synchronized]:

    注意

    该工具不支持 Incremental Publish 选项。点 Incremental Publish 结果发布完整发布。

验证项目是否已发布到服务器

将 Fuse 项目发布到服务器运行时后,您可以连接到服务器并检查项目的捆绑包是否已安装。

  1. 连接到服务器运行时。详情请查看 “在 Servers 视图中连接到正在运行的服务器”一节
  2. Servers 视图中,展开服务器运行时树以公开 捆绑 节点并选择它。

    该工具使用在服务器上安装的捆绑包列表填充 Properties 视图:

    UGsrvVerifyPublishedProj
  3. 要找到项目的捆绑包,请向下滚动到列表底部,或者开始在 Properties 视图的搜索框中输入捆绑包的 Symbolic Name捆绑包的 Symbolic Name 是您在创建项目时为您的项目的名称。

    注意

    另外,您还可以在 Terminal 视图中发出 osgi:list 命令,以查看 Fuse 服务器运行时已安装捆绑包的生成列表。该工具对 osgi:list 命令显示的 OSGi 捆绑包使用不同的命名方案。

    在项目的 pom.xml 文件的 < build > 部分,您可以找到 maven-bundle-plugin 条目中列出的捆绑包符号名称及其捆绑包名称(OSGi),例如:

    ugBundleNamesPomFile

附录 A. Fuse 集成视角

使用 Fuse 集成 视角设计、监控、测试和发布集成应用程序。

Fuse 集成视角

您可以使用以下方法打开 Fuse 集成 透视图:

  • 当您创建新的 Fuse 集成项目(请参阅 第 1 章 创建新的 Fuse 集成项目)时,工具会切换到 Fuse Integration 视角。
  • 在工具栏中点 integration perspective 。如果工具栏中没有 integration perspective 图标,点 new persp ,然后从可用视角列表中选择 Fuse Integration
  • 选择 WindowPerspectiveOpen PerspectiveFuse Integration

Fuse 集成 视角包括 9 个主要区域:

  • Project Explorer 视图

    显示工具已知的所有项目。您可以查看组成每个项目的所有工件。Project Explorer 视图还在其 Camel 上下文节点下显示项目的所有路由上下文 .xml. 文件。这可让您查找并打开项目中包含的路由上下文文件。在每个路由上下文 .xml 文件下,Project Explorer 视图会显示上下文中定义的所有路由。对于多路由上下文,您可以专注于 canvas 的特定路由。

    ProjectExplorerFIP
  • 路由编辑器

    提供主要设计时工具,它由三个标签组成:

    • 设计 确保构建路由的大网格区域,以及从中选择企业集成模式(EIP)和 Camel 组件的面板,然后连接到 canvas 进行路由。

      CanvasPalette

      Canvas 是路由编辑器的工作台以及您大部分工作的位置。它显示一个或多个路由的图形表示,这些路由由连接 EIP 和 Camel 组件(称为节点放置在 canva 上时)组成。

      在 canvas 上选择一个节点会使用应用到所选节点的属性填充 Properties 视图,以便您可以编辑它们。

      Palette 包含所有模式和 Camel 组件需要构建路由,并根据组件、路由、控制流TransformationMiscellaneous 组成它们。 

    • 显示在路由编辑器的 canva 下创建的路由的 .xml 文件的内容。

      您可以在 Source 选项卡中编辑路由上下文,也可以在 Design 选项卡中编辑。Source 选项卡可用于编辑和添加任何配置、注释或 Bean 到路由上下文文件。内容辅助功能可帮助您在使用配置文件时。在 Source 选项卡中,按 Ctrl+Space 以查看可插入到项目中可能的值的列表。

      SourceView
    • 配置

      提供了一种简单的方法来添加共享配置(全局端点、数据格式、anan)到多路由上下文。详情请查看 第 2.6 节 “添加全局端点、数据格式或 Bean”

      CnfigsVAddButton
    • REST

      提供 Rest DSL 组件的图形表示。

      RESTtab
  • 属性 视图

    显示 canvas 上所选节点的属性。

  • JMX Navigator 视图

    列出 JMX 服务器及其监控的基础架构。它使您能够浏览 JMX 服务器以及所监控的需要。它还标识红帽流程的实例。

    JMX Navigator 视图驱动 Fuse 集成 视角中所有监控和测试活动。它决定了 图表 视图、Properties 视图和 Messages View 中显示的路由。它还提供了用于激活路由追踪、添加和删除 JMS 目的地的菜单命令,以及启动和暂停路由。这也是将消息拖放到路由的目标。

    默认情况下,JMX Navigator 视图显示所有在本地计算机上运行的 Java 进程。您可以根据需要添加 JMX 服务器来查看其他机器上的基础架构。

  • 图表视图

    显示在 JMX Navigator 视图中选择的节点的图形树。当您选择进程、服务器、端点或其他节点时,图表视图 以分支(下到其子级)的 root 身份显示所选节点。

    当您选择代理时,图表视图 会显示最多三个子项:连接、主题和队列。它还显示将连接和目的地配置为 grandchildren。

    当您选择路由时,图表视图 显示路由中的所有节点,并显示消息可以通过路由实现的不同路径。它还会在启用路由追踪时显示路由中各个处理步骤的时间指标。

  • 消息视图

    在启用路由追踪时,列出通过所选 JMS 目标或通过 Apache Camel 端点传递的消息。

    JMX Navigator 视图中选择 JMS 目的地时,视图将列出所有在目的地的消息。

    启用路由追踪后,Messages View 会列出在追踪开始追踪后通过路由节点传递的所有消息。您可以配置 Messages View,只显示您感兴趣的数据以及您首选的序列。

    当选择了 Messages View 中的消息跟踪时,其详细信息(消息正文和所有消息标题)会在 Properties 视图中显示。在 图表视图 中,突出显示与所选消息跟踪关联的路由中的步骤。

  • 服务器 视图

    显示由工具管理的服务器列表。它显示它们的运行时状态,并提供添加、启动和停止它们以及向它们发布项目的控制。

  • 终端 视图

    显示已连接容器的命令控制台。您可以通过在 Terminal 视图中输入命令来控制容器。

  • 控制台 视图

    显示最近执行操作的控制台输出。

附录 B. debug Perspective

使用 Debug 透视图来监控和调试正在运行的 Camel 上下文。

Camel 上下文调试器
  • debug 视图

    对于正在运行的 Camel 上下文,Debug 视图会显示 debug 堆栈。

    您可以在同一消息流中切换,在 service:jmx:rmi://jndi/rmi://localhost:1099/jmxrmi/camel 条目中列出的 Camel 上下文 下列出,并比较 Variables 视图中的变量值。

    消息流通过其唯一的面包 ID 标识,后续消息流的面包的面包 ID 由 2 递增。例如,如果第一个消息流的面包是 ID-janemurpheysmbp-home-54620-1470949590275-0-1,第二个消息流的 breadcrumbID 为 ID-janemurpheysmbp-home-54620-1470949590275-0-3

  • 变量 视图

    对于设置了 breakpoint 的路由上下文中的每个节点,当断点点点时,Variables 视图会显示可用变量的值。自上一断点以来,数值变化的每个变量在黄色中突出显示。

    您可以更改可编辑变量的值,以检查此类更改是否生成预期的结果,并测试路由上下文的稳健性。

    您还可以在监视列表中添加变量,以便您可以在消息流中预期的点快速轻松地查看其值是否如预期变化。

  • breakpoints 视图

    显示路由上下文中设定的断点列表,并显示它们是启用还是禁用状态。您可以通过选中(enabling)或取消选中(禁用)它们来启用和禁用个别断点。这可让您在路由上下文中临时专注于有问题的节点。

    resume co 按钮将跳过禁用的断点,以跳到路由上下文中的下一个活跃断点。相反, stepover co 按钮会在路由上下文中跳到下一个执行节点,而不考虑断点。

  • camel Context.xml view

    在图形模式中显示正在运行的路由上下文文件。对于使用 breakpoints 设置的节点,它会显示断点集的类型,以及 breakpoint 是否已启用还是禁用。当达到断点时,其在 canvas 中的对应节点将以红色概述。

    要检查节点的配置,打开 Properties 视图,然后在 camel Context.xml 中的 canvas 上选择该节点。

  • 控制台 视图

    显示 Camel 调试器生成的日志输出,因为它执行路由上下文。

  • 属性 视图

    CamelContext.xml 中,显示在 canvas 上选择的节点设置的属性。