Mule ESB 学习笔记

从零到一:手把手教你用Python搭建医学影像识别CNN模型(附完整代码) 本文详细介绍了如何使用Python和TensorFlow/Keras从零开始构建一个医学影像识别的CNN模型,涵盖数据预处理、模型架构设计、训练调优及部署全流程。通过实战案例和完整代码,帮助开发者快速掌握深度学习在医学影像识别中的应用,特别适合医疗AI领域的初学者和研究者。 阅读详情

Mule ESB 学习笔记

标签: mule3 esb WebServices soa

1. 简介

Mule ESB是一个基于Java的轻量级企业服务总线和集成平台,允许开发人员快速便利地连接多个应用,并支持应用间的数据交换。Mule ESB支持集成现有系统而无论其底层采用何种技术,如JMS、Web Services、JDBC、HTTP以及其他技术。

2. 整体结构

图 整体结构

从上图可见,Mule通过Transports/Connectors与外围的异构系统连接,提供Routing(路由)、Transaction Management(事务管理)、Transformation(转换)、Message Broker(消息代理)、Transportation Management(传输管理)、Security(安全)等核心模块。Mule可以单独使用,也可以架设在常用的应用服务器上。

图 架构简图

外围系统的服务请求通过Mule ESB的Transport接入,Mule通过Transformer进行数据的格式转换,然后经过Inbound Router进行消息过滤(内部通过配置filter实现)后交给Mule的Component进行业务逻辑处理,处理后的结果通过Outbound Router确定传递给哪个接收方,然后通过Transformer进行数据格式转换,通过Transport连接至接收方,传递信息。

此图描述的是Mule中的一个典型场景的处理过程,涵盖了Mule中的各个关键组件。其中某些处理步骤不是必须的,如Inbound Router、Transformer。后续可以看到一些其他场景的处理。

3. 功能

a. 服务中介

  • 将业务逻辑和消息发送分离

  • 屏蔽服务的消息格式和协议
  • 提供任意位置的服务调用
  • 提供协议桥接

b. 数据转换

  • 在应用间交换不同格式的信息 
  • 操作消息的负载内容,包括加密、压缩和编码转换
  • 在异构的传输协议的数据类型间格式化消息

c. 消息路由

  • 基于消息内容和复杂规则路由消息
  • 消息的过滤、聚合以及重新排列序号

d. 服务创建和托管

  • 暴露端点、EJB、Spring Bean以及POJO作为服务
  • 作为轻量级的服务容器进行服务托管

Mule ESB中有一些基本的概念,理解这些基本概念后才能理解Mule的内部机制。从中也可以看到Mule解决问题的基本思路。

 

4. 基本概念

4.1 Model

Model表示托管各个服务的运行时环境。

图 Model

4.2 Service

Service是用来处理服务请求的基本单位,它调用各个组件进行服务请求的处理。

图 Service

4.3 Transport

Transport管理消息的接收和发送,数据转换的过程也是在Transport中通过调用Transformer完成的。

图 Transport

4.3.1 Connector

Connector用于管控特定协议的使用,如HTTP Connector、JMS Connector等。

4.3.2 End-Point

Endpoint用于表示一种协议的特定使用方式,如listening/polling、从中读取、向指定地址写入等,定义了发送和接收消息的通道。Endpoint控制的是底层的实体在Connector中如何被使用。

Endpoint定义于Inbound和Outbound Router中。

4.4 Transformer

Transformer用于转换消息的内容。

图 Transformer

4.5 Router

Router使用Filter基于消息中的属性信息进行消息的分发。

图 Router

Router在Service中的位置决定了Router的性质(inbound、outbound和response)和担任的角色(pass-through、aggregator等)。

4.6 Component

Component是Service的核心部件,是Service的业务逻辑的实现。

图 Component: implicit bridge component

Component可以是Java Class(POJO、Spring Bean)、Web Service、Script等。

Component可定义自己的生命周期:initialise、start、stop、dispose,不过需要实现Mule的LifeCycle接口。Mule 3.0版本开始提供@PostConstruct和@PreDestroy的注解,对应生命周期的initialise和dispose阶段,不需要实现Mule的LifeCycle接口了。

4.7 Flow(@since 3.0)

Flow是Mule 3.0新引入的,包含一个消息源(Message Source)和多个消息处理器组成的处理器链。

图 Flow

 

根据实际需求着重检查了一下Mule ESB的消息传递方式。Mule支持常用的几种消息传递方式,能够满足要求。

 

5. 消息传递方式

5.1 异步方式

异步方式是一种单向调用,调用者不需要获得响应。

图 Asynchronous

异步方式通过inbound和outbound endpoint的exchange-pattern=”one-way”实现。

使用基本的Stdio Transport验证,通过标准输入传输字符串,将其原样传递给标准输出进行显示。相应配置如下:


xml 代码
  1. <service name="echo">    
  2.     <inbound>    
  3.         <stdio:inbound-endpoint system="IN" exchange-pattern="one-way" />    
  4.     </inbound>    
  5.         
  6.     <component>    
  7.         <singleton-object class="demo.mule.umo.StdIo" />    
  8.     </component>    
  9.         
  10.     <outbound>    
  11.         <pass-through-router>    
  12.             <stdio:outbound-endpoint system="OUT" exchange-pattern="one-way" />    
  13.         </pass-through-router>    
  14.     </outbound>    
  15. </service>    
运行服务,控制台显示结果如下:
 
  1. Please enter: Hello, world!    
  2. INFO  2010-12-07 19:21:18,877 [ConsoleConnector.dispatcher.1]    
  3.     org.mule.lifecycle.AbstractLifecycleManager: Initialising:    
  4.     'ConsoleConnector.dispatcher.23255376'. Object is: StdioMessageDispatcher    
  5. INFO  2010-12-07 19:21:18,877 [ConsoleConnector.dispatcher.1]    
  6.     org.mule.lifecycle.AbstractLifecycleManager: Starting:    
  7.     'ConsoleConnector.dispatcher.23255376'. Object is: StdioMessageDispatcher    
  8. Hello, world!    
其中INFO输出是Mule第一次初始化相应Connector打印出来的,之后调用服务不会再次显示。

异步方式适用于简单的消息传递的场景。

5.2 请求-响应方式

请求-响应方式即请求方调用服务后,服务立即处理并返回响应结果,不需将消息再次传递。

图 Request-Response

请求-响应方式通过input endpoint的exchange-pattern=”request-response”实现,相应配置如下:


xml 代码
  1. <strong>  
  2.     <strong>  
  3.         <model name="services">        
  4.             <service name="echoService">        
  5.                 <inbound>        
  6.                     <inbound-endpoint address="http://localhost:7007/services/Echo"        
  7.                         exchange-pattern="request-response">        
  8.                         <cxf:jaxws-service />        
  9.                     </inbound-endpoint>        
  10.                 </inbound>        
  11.                 <component>        
  12.                     <singleton-object class="demo.mule.umo.Echo" />        
  13.                 </component>        
  14.             </service>        
  15.         </model>  
  16.     </strong>  
  17. </strong>    
上边是通过service配置的,通过flow配置如下:

 

xml 代码
  1. <flow name="EchoFlow">        
  2.     <inbound-endpoint address="http://localhost:7007/services/Echo"        
  3.         exchange-pattern="request-response" />        
  4.     <cxf:jaxws-service serviceClass="demo.mule.umo.Echo" />        
  5.     <component>        
  6.         <singleton-object class="demo.mule.umo.Echo" />        
  7.     </component>        
  8. </flow>    

在浏览器中输入“http://localhost:7007/services/Echo/echo/text/hello,world”,浏览器中会显示“hello,world”的输出信息。

请求-响应方式适用于单次服务调用的场景。

5.3 同步方式

同步方式即请求方调用服务后,component将处理结果发送给另一个外部服务处理,并将处理结果反方向返回。

图 Synchronous

同步方式通过inbound和outbound endpoint的exchange-pattern=”request-response”实现,相应配置如下:


xml 代码
  1. <flow name="echo">      
  2.     <inbound-endpoint address="http://localhost:7007/services/Echo"      
  3.         exchange-pattern="request-response" />      
  4.     <cxf:jaxws-service serviceClass="demo.mule.umo.Echo" />      
  5.     <component>      
  6.         <singleton-object class="demo.mule.umo.StdIo" />      
  7.     </component>      
  8.     <vm:outbound-endpoint path="vm" exchange-pattern="request-response" />      
  9. </flow>      
  10. <flow name="vm">      
  11.     <vm:inbound-endpoint path="vm" exchange-pattern="request-response" />      
  12.     <component>      
  13.         <singleton-object class="demo.mule.umo.Vm" />      
  14.     </component>      
  15.     <stdio:outbound-endpoint system="OUT" exchange-pattern="one-way" />      
  16. </flow>    

同步方式适用于通过Mule调用远程服务的场景。

5.4 异步请求-响应方式

异步请求-响应方式即请求方调用服务后不需要立即获得返回结果,component将请求发送给其他外围系统处理(可能有多个),全部处理完毕后通过指定的异步应答Router返回给请求方。

图 Asynchronous Request-Response

异步请求-响应方式通过在OutBound Endpoint中增加reply-to以及增加async-reply节点实现,响应配置如下:


xml 代码
  1. <flow name="echo">      
  2.     <inbound-endpoint address="http://localhost:7007/services/Echo"      
  3.         exchange-pattern="request-response" />      
  4.     <cxf:jaxws-service serviceClass="demo.mule.umo.Echo" />      
  5.     <component>      
  6.         <singleton-object class="demo.mule.umo.StdIo" />      
  7.     </component>      
  8.     <vm:outbound-endpoint path="vm" exchange-pattern="request-response" />      
  9. </flow>      
  10. <flow name="vm">      
  11.     <vm:inbound-endpoint path="vm" exchange-pattern="request-response" />      
  12.     <component>      
  13.         <singleton-object class="demo.mule.umo.Vm" />      
  14.     </component>      
  15.     <stdio:outbound-endpoint system="OUT" exchange-pattern="one-way" />      
  16. </flow>    

异步请求-响应方式适用于请求需要被多个远程服务并行处理,结果需要汇总处理后返回的场景。

注:上述代码未运行通过,queue1和queue2获得了请求消息并正常处理,但返回至async-reply时抛出异常,暂未定位到问题。

后将collection-async-reply-router改为single-async-reply-router未报异常,代码示例如下:

 

xml 代码
  1. <em><service name="async req-rep">      
  2.     <inbound>      
  3.         <stdio:inbound-endpoint ref="stdioInEndpoint" />      
  4.     </inbound>      
  5.     <component class="demo.mule.umo.Echo" />      
  6.     <outbound>      
  7.         <multicasting-router>      
  8.             <vm:outbound-endpoint path="async.queue1" exchange-pattern="one-way" />      
  9.             <vm:outbound-endpoint path="async.queue2" exchange-pattern="one-way" />      
  10.             <reply-to address="vm://reply" />      
  11.         </multicasting-router>      
  12.     </outbound>      
  13.     <async-reply timeout="5000" failOnTimeout="true">      
  14.         <vm:inbound-endpoint path="reply" exchange-pattern="one-way" />      
  15.         <single-async-reply-router />      
  16.     </async-reply>      
  17. </service></em>  

等有空看看collection-async-reply-router吧,或者自定义router

转自 http://my.oschina.net/moon/blog/10701

 

Ghost卷积原理与构建YOLOv11的GhostNet变体 本文探讨了在边缘设备部署YOLOv11时使用Ghost卷积进行模型轻量化的实践经验。针对Jetson Nano的4GB内存限制,作者通过替换Backbone中的3x3标准卷积为Ghost卷积,实现了参数减少28%、推理速度提升38%,仅损失1.1%mAP的优化效果。文章详细介绍了Ghost卷积的实现原理、在YOLOv11中的具体替换策略,以及训练调参和部署优化的关键技巧。作者强调轻量化是计算效率与模型性能的权衡,建议工程团队保留原模型和Ghost变体两个版本,根据实际需求灵活切换。Ghost卷积的核心价值在 阅读详情

相关推荐

Oracle-OGG trail 文件大小引起的进程异常 OGG-01172

监控OGG目标端进程,其中一个进程异常,状态为 ABENDED,start repa 执行失败。进入OGG报告目录检查运行报告 2015-04-20 09:38:36 ERROR OGG-01172 Discard file (/ogg/oggrm/11.2/dirdat/repa.dsc) exceeded max bytes (2000000000). 总结处理方法,从根本上解决问题。

xdyzgjy的专栏 7956

EnjoyingSoft之Mule ESB开发教程第一篇:初识Mule ESB

目录 1. Mule ESB基本介绍 2. Mule ESB社区版和企业版 3. Mule ESB常用场景 4. Mule ESB软件安装 客户端安装 服务端安装 5. 第一个Mule ESB应用- Hello world ...

weixin_30312557的博客 1121

自托管AI邮件助手imap-mcp:安全连接Claude与个人邮箱的完整指南

在AI助手日益普及的今天,如何安全地让AI访问个人邮箱数据成为关键挑战。传统方法如直接暴露IMAP/SMTP凭证存在严重安全隐患,而第三方SaaS服务则涉及隐私泄露风险。Model Context Protocol (MCP) 作为一种新兴的标准化协议,为AI工具安全接入提供了解决方案。其核心价值在于实现数据源与AI助手间的安全、标准化交互,特别适用于处理敏感信息的场景。imap-mcp正是基于MCP协议构建的自托管邮件网关,它通过多层安全机制(包括主密钥加密和OAuth令牌哈希化)保护用户凭证,让用户能在

weixin_28295799的博客 655

Mule ESB 的使用以及基本概念,如何使用HTTP组件实现消息传递

使用Anypoint Studio工具开发Mule ESB程序前言Mule ESB1.Mule ESB 简介2.Mule ESB 架构3.架构说明Mule ESB 的其他特性使用Mule ESB 实现HTTP通讯协议 前言 先赞后看,养成习惯! Mule ESB 1.Mule ESB 简介   Mule ESB是一个基于Java的轻量级企业服务总线和集成平台,允许开发人员快速便利地连接多个应用,并支持应用间的数据交换。   Mule是由MuleSoft(前身是MuleSource)开发的一个基于

Programmer_SKT的博客 2529

期末求生指南:手把手教你用F12开发者工具绕过百一测评的切屏检测(JavaScript/jQuery实战)

本文详细介绍了如何利用F12开发者工具绕过百一测评的切屏检测,通过分析JavaScript/jQuery中的blur()和focus()事件监听机制,提供实战技巧动态修改代码。文章涵盖事件监听定位、代码修改方法及应对高级检测机制的策略,适合需要临时解决线上考试限制的学生参考。

weixin_30731305的博客 447

2.数字芯片时序正确的前提—Max-transition

芯片物理设计中最基本的Max-transition检查

weixin_43868998的博客 5424

13.RabbitMQ常见问题(可靠性投递,幂等性等)

消息的可靠性投递 消息堆积 消息幂等性

weixin_43891622的博客 431

RLC电阻电容电感基础知识——电感篇

电感 等效电路 电感线圈由铜导线绕制,等效电路如图所示。 寄生电阻RS,包括了绕线电阻、引脚串联电阻以及磁芯损耗电阻三部分组成,其中绕线电阻与线径、长度、铜线电阻率有关;引脚电阻与引线长短、粗细有关;磁芯损耗电阻与磁芯材料特性有关,显然磁芯损耗电阻还与工作频率有关.寄生电容C主要是绕线圈与圈之间的杂散电容(为PF级),与绕线工艺有关。 等效导纳 显然: (1)当角频率ω(频率f)较小时,呈电感性. (2)当角频率ω等于ω0时,导纳Y虚部为0,呈现电阻性,即发生共振。令导纳Y虚部为0,即可求出共振角频率ω

azj2019的博客 1万+

Mule ESB Endpoints配置摘要

1.Endpoint简介 Endpoints are used to connect services. An endpoint is a specific channel on which a service can send messages and from which another service can receive messages. For example, a purcha

水木年华 4007

用Java实现对接豆包ai火山引擎详细版简单明了ai对话

第二部分代码实现。

m0_72637700的博客 8607

042、双管反激的电压应力优势

【摘要】本文通过300W工业电源炸管案例,对比分析了单管与双管反激拓扑的电压应力差异。单管反激因漏感能量难以处理,尖峰电压可达1180V,需依赖RCD吸收电路但效率低下;双管反激通过钳位二极管将漏极电压限制在输入电压水平(实测650V),能量回馈使效率提升2-3%。虽增加两个MOS管,但可选用600V器件(单管需1200V),总成本反降15%以上。作者建议150W以上或高压输入场景优先采用双管反激,其确定的电压应力可显著提升可靠性,避免单管反激的参数玄学问题。关键设计要点包括快恢复二极管选型、紧凑布局及漏感

Jack010169的博客 81

Mule ESB 学习笔记 服务调用

一. 服务调用 1. Mule实现并提供Web Service     在Mule上开发并发布一个Web Service供客户端调用。           ·         示例配置     <core:inbound-endpoint address="http://localhost:65082/services/Echo1" exch

u010395804的专栏 3130

【PointNet++】制作点云数据集使用CloudCompare进行标注

使用PointNet++复现成功后,需要训练自己的数据集。于是使用cloudcompare参照ShapeNet的数据集格式去制作,最终保存的txt文件格式为“xyz+rgb+label”,一共7列。 自己按此制作好的数据集已成功训练及推测,于是记录下来让好兄弟好姐妹们少踩坑多吃肉。

纵马踏花向自由 5714

MULE ESB学习笔记

写之前的内容时,Mule刚刚3.0.1版本,很多官方文档还没有更新(尤其示例代码),维持在V2的状态。经过了一年多的时间,Mule社区版发展至了3.2版本,并且推出了Mule Studio可视化开发工具(当前beta状态,支持Mule 3.1.2)。 将以前自己验证的示例代码在3.1.2版本上又跑了一遍(有些变化),在此做一下记录。 一. 服务调用 1. Mule实现并提供Web S

涂作权的博客 1497

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Mule ESB 学习笔记mule和jersey的整合使用

在项目常用jesery作为rest开发的框架,jesery简单快捷,易于扩展方便使用,在这里我们学习一下mule和jesery的整合使用. 1.简单的绑定一个资源请求路径: Xml代码   1.       name="helloWorldResource">   2.             3.               address="http://localhost:6308

u010395804的专栏 2215

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Mule ESB 学习笔记(1)

前几天开始看Mule ESB的相关内容,在此做一下记录,以便后续查阅。 附-学习资料: Mule in Action,by David Dossot & John D'Emic Mule 官方文档 DZone Refcardz #40: Core Mule 1. 简介 Mule ESB是一个基于Java的轻量级企业服务总线和集成平台,允许开发人员快速便利地连接多个应用,

borhunter的专栏 738

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Mule ESB 学习笔记(1)

1. 简介 Mule ESB是一个基于Java的轻量级企业服务总线和集成平台,允许开发人员快速便利地连接多个应用,并支持应用间的数据交换。Mule ESB支持集成现有系统而无论其底层采用何种技术,如JMS、Web Services、JDBC、HTTP以及其他技术。 2. 整体结构 图 整体结构 从上图可见,Mule通过Transports/Connectors与外围的异构系统连

cruise技术博客 1670
上一篇: Mule的安装配置
下一篇: 以一个实例看Mule3.0中的Flow
borhunter
博客等级 码龄20年 4粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值