• 一步步了解ESB (二) Mule ESB-Basic Studio Tutorial


    这次演练的目的是向您介绍Mule Studio(基于eclipse的集成开发工具),并帮助您轻松地创建自己的应用。

    本教程本教程将引导您如何使用 Mule Studio 构建一个简单的HTTP请求 - 响应的应用程序。创建并在本地运行该示例后,您将能够应用你所学到的知识创建更复杂的应用。

    内容:
    一、假设 
    二、目标
    三、启动Mule Studio
    四、创建一个新项目
    五、创建Mule流程图
    六、配置流元素
    七、运行应用程序
    八、使用应用程序
    九、停止应用程序
    十、编辑应用 程序
    十一、额外的加分任务
    十二、更进一步


    一、假设
    本教程假定您已经下载并安装了 Mule Studio 。如果你先前没有任何使用Eclipse或基于Eclipse的IDE的经验,请查看简要介绍Mule Studio的页面。

    二、目标
    在本教程中,您的目标是:
    1、使用Mule Studio创建拥有单个流程的应用程序:

    1)接收一个HTTP请求 
    2)记录该请求的内容
    3)将修改后的内容作为http响应

    2、在嵌入Mule Studio的本地运行环境中运行该应用程序
    3、使用你的浏览器测试你的应用程序
    4、停止应用程序。
    5、编辑应用程序,然后重新运行它。 
    6、(可选)用你的知识迎接一个额外的挑战。

    三、启动Mule Studio

    如果你在安装Mule Studio时已经运行了Mule Studio,请跳过本节的其余部分,直接进入创建新项目。 
    1、导航到您安装Mule Studio的本地驱动器上的目录。
    2、双击可执行文件来启动 Mule Studio 。

    在Windows 中,是MuleStudio.exe
    在Mac OS中,是 MuleStudio.app
    在Linux中,是 MuleStudio

    3、当 MuleStudio 弹出了Workspace Launcher对话框,单击确定以接受默认的工作空间。



    4、如果这是你第一次运行Mule Studio,你可能会看到一个欢迎屏幕。点击创建一个项目来关闭屏幕,并直接跳转到新的Mule Project向导



    四、创建一个新项目

    1、除非新建项目向导已经打开,否则,单击File> New>mule项目。
    2、Studio将打开新的Mule Project向导。在名称字段中填入值Basic Tutorial。
    3、选择服务器运行时环境,以便部署你的应用程序。MuleStudio会自动将下载MuleStudio时附带的默认服务器中的一个填入服务器运行时域。您可以更改为不同的运行环境,如果你愿意的话,但这个项目必须适用于这些运行环境。欲了解更多有关安装额外运行时环境的版本,请参阅安装扩展。




    1、单击完成,创建项目。
    2、在包浏览器中,Basic Tutorial.mflow出现在流文件夹内,Mule project.xml出现在src文件夹下面。



    这个.MFLOW文件存储流信息供可视化编辑器编辑。当你的新项目第一次打开,Mule Studio会自动打开.MFLOW文件,将显示一个空白的画布。



    了解更多有关.MFLOW和Mule的project.xml文件 的信息

    .MFLOW文件是Mule Studio特有的文件,用来在可视化编辑器画布呈现上您的项目流程信息。此文件在Mule Studio之外是不起作用的,不应该被提交到源代码控制系统,如git或svn。相反,分享实际的project.xml文件,每个<NAME>.MFLOW文件在src/main/project.XML中都有一个对应的<NAME>,使用此文件可以共享并提交您的项目。 
    Mule-project.xml文件是Mule项目描述符文件。打开这个文件改变项目运行时环境,设定或编辑环境变量,或编辑该项目的描述。为避免错误,共享你的项目时,提交该文件,连同您的<NAME>.xml文件到您的源代码控制系统。


    五、创建Mule流程图

    在本教程中,你的目标是建立接收一个HTTP请求,记录该请求的内容,将修改后的内容作为http响应的应用程序。您可以使用Studio中三大基石构建这个应用程序:


    HTTP endpoint 让你的Mule应用程序通过HTTP或HTTPS协议连接到Web资源;在元素板的端点部分找到这个端点
    Logger 根据mule表达式的值记录日志信息或活动;在元素板的组件部分找个这个组件
    Set Payload Transformer 修改http内容为Hello,World; 在元素板的转换器部分找到这个转换器

     

    拖放这三个构件块到画布上,可直观地构造你的流程,显示的顺序如下:



    提示:使用元素板过滤器

    请注意,在元素板上,每个类别中的构建块按字母顺序排列。为避免滚动,使用选项板的右上角的过滤器工具可以更快速地找到你想要构建块。




    六、配置流元素

    几乎所有的Mule元素提供配置选项,您可以通过以下两种方式之一设置:
    1、通过在Studio的可视化编辑器的构建块属性选项卡
    2、通过在Studio的XML编辑器中XML代码

    以下说明向您介绍在两个编辑器中如何配置。
    在你的流程图中单击HTTP构建块来打开它的属性编辑器。默认情况下,端点被设置为请求 - 响应交换模式。这意味着,Mule处理完流程后,将响应返回端点。默认情况下,主机设置为localhost和端口为8081。




    在画布的底部,单击配置XML切换到XML编辑器视图。



    可以看到消息流画布和配置XML视图中显示的默认配置是相同的:
    <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" doc:name="HTTP"/>
    说明:name属性对应出现在消息流画布上的构件块图标下方的显示名称。 

    3、仍然在XML配置视图,端口属性的值更改为8084。
    4、点击消息流切换回可视化编辑器。
    5、单击HTTP构件块重新打开其属性编辑器,并注意端口字段现在反映的是更新值8084。您可以在任何编辑器修改这个值,只要你来回切换,Studio的双向编辑器会自动更新配置。



    6、点击 Logger 构件块(或使用键盘上的向右箭头)的属性编辑器切换到Logger组件。
    7、在消息字段中,输入:当前内容为#[message.payload]。




    该字符串#[message.payload]是一个简单的mule表达式,计算结果为消息的内容,因为它在流程中传递。当你需要在你的流程中追踪消息内容时,包含这个讯息可以指示Mule在不同的点把该信息记录在应用程序日志文件中。它可以在更复杂的用例中得以应用。 

    8、单击设置logger构件块(或按键盘上的右箭头)的属性编辑器切换到 logger 转换器。
    9、请注意,该值字段包含以下字符:#[]



    10、在值字段中,输入以下内容:
     
    #['你好'+ message.payload+“。今天是“+ server.dateTime.format(”日/月/年')+''。 ]




    需要注意的是message.payload和server.dateTime.format(“日/月/年”)都是Mule表达式。因为你是在一个较大的mule表达式中输入它们,不需要围绕这些个人表达的: 语法。您的#[]语法是不是骡子表情里面输入任何内容必须包含用引号,这样mule把它读成一个字符串。你在#[]中输入的任何东西,如果它不是一个mule表达式,那么它必须用引号括起来,这样mule才会把它当做字符串解析。

    11、通过单击文件>来保存您的应用程序。
     
    您的完整的应用程序XML,一旦配置,应该如下所示:

    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <mule xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:spring="http://www.springframework.org/schema/beans" version="EE-3.4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd  
    3. http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd  
    4. http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd">  
    5.    
    6.     <flow name="Basic_TutorialFlow1" doc:name="Basic_TutorialFlow1">  
    7.         <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8084" doc:name="HTTP"/>  
    8.         <logger message="Current payload is #[message.payload]" level="INFO" doc:name="Logger"/>  
    9.         <set-payload value="#['Hello, ' + message.payload + '. Today is ' + server.dateTime.format('dd/MM/yy') + '.']" doc:name="Set Payload"/>  
    10.     </flow>  
    11. </mule>  


    七、运行应用程序 

    完成创建,配置,并保存你的新的应用程序,您就可以在嵌入Mule的服务器上运行(包括在Mule Studio中,作为捆绑下载的一部分)。

    1、在Package Explorer窗格中,右键单击Basic Tutorial.mflow文件,然后选择Run As>Mule Application。 (如果您还没有保存,Mule会提示您现在保存。)
    2、Mule会立即显示运行进度齿轮,开始您的应用程序,并让它运行。当启动过程完成后,MuleStudio读取控制台会显示一条消息,启动应用程序“basic_tutorial”。



    八、使用应用程序
     
    1、打开任何一个网页浏览器,然后导航至http://localhost:8084/world ,
    2、您的浏览器会显示一条消息,上面写着,Hello, world 。Today is[今天的日期。 
    3、在浏览器的地址栏中,用你自己的名字替换 world 这个词,然后按回车键。
    4、您的浏览器会显示相同的消息,但包括的不是“world”而是你的名字。

    接下来,检查你的Mule Studio控制台来验证Mule记录的内容之前的消息到达表达式转换器。
    将光标放置在控制台窗口中,按Ctrl + F或Command + F打开查找对话框,然后搜索当前内容。寻找对应于您在浏览器中输入的内容。例如:
    INFO 2013年8月21日09:22:26,446 [ [ basic_tutorial ] connector.http.mule.default.receiver.02 。 ] org.mule.api.processor.LoggerMessageProcessor :当前内容
    您还可以看到一些其他的结果“ /的favicon.ico ”的内容。这些结果是由浏览器自动生成的。你可以通过编辑部分应用程序来过滤掉这些结果,如下。

    恭喜!你已经运行和测试您的应用程序!
    您通过您的Web浏览器提交请求到应用程序的入站端点。
    Mule应用程序收到您的请求,并记录内容(不管你在http://localhost:8084/之后键入什么)到控制台。
    然后,应用程序在发送的消息上设置内容,将结果返回给你的HTTP端点。

    九、停止应用程序

    要停止应用程序,单击在控制台面板上方的红色正方形终止图标。 

    十、编辑应用

    您可能已经注意到,每次刷新,您的浏览器都插入额外内容“/ favicon.ico”。你可以添加一个过滤器组件到您的流程,排除这些内容。具体方法如下: 
    1、定位到HTTP端点和接收器之间,拖入一个表达式过滤器到你的画布



    2、点击表达式过滤器以打开其属性选项卡,然后在表达式字段中输入以下内容:
    #[message.payload!='/favicon.ico']




    这个表达式告诉Mule检查消息内容中不等于字符串' /favicon.ico"的部分 。如果表达式的值为true ,Mule传递消息到流中的下一个步节点。如果表达式计算为false ,Mule停止处理该消息。
    3、保存您的应用程序,然后再次运行它。 (在你的包资源管理器,右键单击Basic Tutorial.mflow,然后单击运行方式>Mule Application。 ) 
    4、等待,在控制台,读取到消息,开始应用' basic_tutorial “ 。 
    5、返回到您的Web浏览器并转到http://localhost:8084/world
    6、选择你自己的词替换掉world。用不同的词语重复此步骤数次。 
    7、检查您的控制台得到的内容:将光标放置在控制台窗口中,按Ctrl + F或Command + F打开查找对话框,然后搜索当前内容。
    8、你看到的所有内容应与您在浏览器中输入的相同,/ favicon.ico应该不再被包括在内。
    您的完整的应用程序XML,一旦编辑过,应该如下所示:

    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <mule xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:spring="http://www.springframework.org/schema/beans" version="EE-3.4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd  
    3. http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd  
    4. http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd">  
    5.     <flow name="Basic_TutorialFlow1" doc:name="Basic_TutorialFlow1">  
    6.         <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8084" doc:name="HTTP"/>  
    7.         <expression-filter expression="#[message.payload != '/favicon.ico']"  doc:name="Expression"/>  
    8.         <logger message="Current payload is #[message.payload]" level="INFO" doc:name="Logger"/>  
    9.         <set-payload value="#['Hello, ' + message.payload + '. Today is ' + server.dateTime.format('dd/MM/yy') + '.']" doc:name="Set Payload"/>  
    10.     </flow>  
    11. </mule>  


    十一、额外的加分任务
    现在,你已经知道了mule studio的工作方式,尝试运用你的知识,完成一个额外的任务。修改您的应用程序,这样,除了像现在这样,转化的消息内容,响应http请求,返回到您的浏览器。Mule还可以做: 
    记录的Mule自动分配给每个流消息的唯一消息ID ,将浏览器中显示的消息内容写到本地文本文件中,使用消息ID命名每一个文本文件
    要做到这一点,你需要把另外一个消息处理器添加到您的流程,让Mule直接把消息内容写到一个文件中。
    您还需要使用您以前没见过的另一个Mule表达式,以使用唯一的消息ID,如果你需要帮助,使用下面的提示。

    提示 :
    1、 我如何记录消息ID?
    Mule表达式通过#[message.id]解析当前消息的唯一ID
    2、 我怎样将消息写入一个文件?
    尝试在你的流程中的设置消息内容转换器后增加一个文件端点。 
    3、我如何使用消息的ID命名文件?
    在输出模式字段中填入文件端点,告诉Mule如何命名文件和要使用的文件类型。请注意,您可以在这里使用相同的Mule表达您用来记录消息ID。




    查看答案,包括步骤说明和完整的代码:
    还有就是要实现上述目标的方法不止一种,但下面介绍的最快方法。

    1、点击你的现有Logger组件,打开其属性选项卡。 
    2、修改消息字段改为: 当前的消息内容为#[message.payload]和消息ID为#[message.id] 
    (如果你愿意,你可以改用一个新的Logger组件记的消息ID在一个单独的步骤。如果你选择这样做,第二个Logger组件可以在任何地方在表达式过滤器后,流放置。) 
    3、拖放一个文件端点到你的画布,设置在消息内容转换器之后。
    4、点击文件端点,打开属性编辑器。
    5、输入您要Mule创建文件的路径。例如: /应用程序/ muleStudio /例子/ BasicTutorial
    6、输入输出模式定义文件名和类型,如下所示: # [ message.id ].TXT 
    查看修改后的应用程序代码:

    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <mule xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns:file="http://www.mulesoft.org/schema/mule/file" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:spring="http://www.springframework.org/schema/beans" version="EE-3.4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd  
    3. http://www.mulesoft.org/schema/mule/core  
    4. http://www.mulesoft.org/schema/mule/core/current/mule.xsd  
    5. http://www.mulesoft.org/schema/mule/http  
    6. http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd  
    7. http://www.mulesoft.org/schema/mule/file  
    8. http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd  
    9. http://www.mulesoft.org/schema/mule/ee/tracking  
    10. http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd">  
    11.    
    12.     <flow name="Basic_TutorialFlow1" doc:name="Basic_TutorialFlow1">  
    13.         <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8084" doc:name="HTTP"/>  
    14.         <expression-filter expression="#[message.payload != '/favicon.ico']"  doc:name="Expression"/>  
    15.         <logger message="Current payload is #[message.payload] and message id is #[message.id]" level="INFO" doc:name="Logger"/>  
    16.         <set-payload value="#['Hello, ' + message.payload + '. Today is ' + server.dateTime.format('dd/MM/yy') + '.']" doc:name="Set Payload"/>  
    17.         <file:outbound-endpoint path="/Applications/muleStudio/examples/BasicTutorial" outputPattern="#[message.id].txt" responseTimeout="10000" doc:name="File"/>  
    18.     </flow>  
    19. </mule>  

    7、保存您的应用程序,然后再次运行它。 (在你的包资源管理器,右键单击Basic Tutorial.mflow,然后单击运行方式>Mule Application。 )  
    8、等待,在控制台,读取到消息,开始应用' basic_tutorial “ 。 
    9、返回到您的Web浏览器并转到http://localhost:8084/world
    10、选择你自己的词替换掉world,刷新浏览器。 
    11、请检查您的控制台,使用find命令,查看已记录的消息内容和消息ID来确认Mule已经成功记录您所使用的浏览器发出的每个消息。 
    12、导航到您在第五步上面定义的本地驱动器上的文件夹。
    13、您的文件夹应该包含.txt文件。打开txt文件,并确认: 
    a、消息内容,即您在浏览器中观察到的;
    b、该文件名对应的消息ID记录在您的控制台
  • 相关阅读:
    axios解决调用后端接口跨域问题
    vuex的使用入门-官方用例
    vue使用axios实现前后端通信
    vue组件间通信用例
    vue-router的访问权限管理
    vue-router使用入门
    PHP 流程控制
    PHP 表达式和运算符
    PHP 预定义变量
    PHP 常量
  • 原文地址:https://www.cnblogs.com/lilongsheng1125/p/4978536.html
Copyright © 2020-2023  润新知