mule in action翻译13 : 3.1 理解连接器

2024-03-25 05:38

本文主要是介绍mule in action翻译13 : 3.1 理解连接器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

mule in action翻译13 : 3.1  理解连接器

 

第3章 连接器

 

本章内容:

    1、使用连接器整合不同的协议

    2、云连接器API

    3、整合SaaS APIs

 

     应用集成的关键是四处运送数据。把珍贵的时间花费在编写WSDL、写JMS消费者程序、钻研供应商自相矛盾的文档上,并不会对你的集成应用提供多大的贡献。反而造成了负面影响:你费力编写代码却并不能解决实际的业务问题。甚至当这些琐碎的代码最终开发完成时,它们在各个项目或各个团队的实现也是不尽相同的。这给开发人员提高开发速度造成了困难,也会影响开发人员在不同团队间的流动。开发人员必须保证他们的传输代码是线程安全的,进行了正确的错误处理,且当协议或API变化时还需要更新代码。

 

 

    让我们重新回顾一下这个问题,这实际上是相当简单的,例如去接受HTTP请求并把内容发送到JMS消息队列,我们在第一章已经使Mule实现了这个功能。这是一种比较简单的情况,但如果不使用类似Mule这样的集成框架,你需要完成下列这些步骤:

 

    1、设置一个web服务器去接受请求

    2、把HTTP请求转换为一个JMS消息

    3、得到并正确的管理资源(连接工厂、会话等等)以发送JMS消息

    4、正确的处理并发、日志、安全等等问题。

 

    编写这些代码对你来说或许简单或许很难,这取决于你的技术水平和对一些能简化开发的第三方框架的属性程度。然而不管怎样,你或你的团队愿意去开发、测试、管理文档并进行维护这些东西吗?

 

还是使用Mule来简化这个问题吧。

 

    Arnor Accounting 公司和 Frozen North Freezing公司

    本章例子中用到这两个公司,Arnor Accounting 是一个小的公司,

   但它前瞻性的使用了基于SaaS(软件即服务)的会计应用系统。

   Frozen North Freezing 公司是提供小型冷却产品的公司。他们的产品功能与其他系统有许多集成点,

   典型的是进行监控。

 

 

 

 

 

3.1 理解连接器

 

    连接器是Mule对发送数据、接受数据以及和不同API进行交互的过程抽象出的一个概念。在mule中最常使用的连接器是 transport。transport 对协议提供了一个适配层,如HTTP JMS。transport提供数据源和数据“容器”。他们用来把数据放入流或从流取出数据。流的数据源被称作 接入端口( inbound endpoint).

数据容器或数据目的地 称作为 接出端口(outbound endpoint)。

本章的第一部分 包含mule的最重要的 transports。

 

   另外一种连接器称为 云连接器(cloud connector)。云连接器专门用来连接API。起初是指基于云的API(这正是其名字之起源),比如 Twitter 或 Salesforce提供的API。这个定义现在有点模糊了,像你在本章随后看到一样,它也包含一些别类的API如MongoDB。云连接器通常不提供endpoints ,而是有映射API中定义的操作的处理器。云连接器包装了API的操作,大大提高了开发人员效率。

 

 

 

3.1.1 使用XML配置连接器

 

mule配置文件中经常会包含一个或多个连接器元素。每个transport都有自己的特殊的连接器属性。

例如,这是个文件连接器的配置 

<file:connector name="fileConnector" autoDelete="false"/>

 

这是个进行安全代理的HTTP连接器

<http:connector name="HttpConnector"proxyHostname="${proxyHostname}"proxyPort="${proxyPort}"proxyUsername="${proxyUsername}"proxyPassword="${proxyPassword}" />

 

 

    连接器元素包含一个name属性,它是endpoints中连接器的唯一标示。这使你可对一个transport配置多个连接器,每个连接器可以设置不同的参数。

 

   配置中不包含任何连接器是绝对可能的,且甚至是常见的。为啥这样 ?若mule发现你的一个endpoints需要特定的连接器,它将自动实例化一个给你,这时连接器的默认值是根据你的配置参数生成的。如果这些自动生成的连接器能满足你的需求,那么这确实是一个很好的方式。

 

 

    同一个协议多个连接器      当你对某个特定的协议只有一个连接器时,不管它是默认自动创建的还是

   你明确配置的,在endpoint都不需要添加一个对连接器name的引用。一旦某个协议有多个连接器,

   使用该协议的endpoint将组织mule加载你的配置,并会抛出异常:

   “There are at least two connectors matching protocol [xyz], so the connector to use must be

   specified on the endpoint using the connector property/attribute.”

  这时只要在每个endpoint引用一下使用的连接器的名字就行了。如:

    <vm:endpoint onnector-ref="myVmConnector" name="LoanBrokerQuotes"  path="loan.quotes"/>

 

 

    对transport 而言,一个连接器提供了和特定协议通讯的基础。一个endpoint 通过渠道进行消息的发送或接受,而连接器给渠道提供了基础设施。例如一个JMS 连接器负责管理连接JMS broker,在通讯失败时进行重新连接和认证。一个JMS endpoint 负责发送和接受队列消息和 话题。endpoint 是mule传输IO的基石;他们是你向流放入和取出消息的工具。

 

    endpoint有两种“风味”:inbound 和 outbound。

inbound endpoint用来做消息源;outbound endpoint 用来发送数据。

inbound endpoint 可以完成功能如 接收JMS消息、读文件流、从邮件服务器拉取邮件。

outbound endpoint 可以分发JMS消息、把记录插入到数据库表、向FTP服务器发送文件。

你也将在mule内部使用inbound endpoint 和 outbound endpoint以进行组件和流之间的通讯。

 

    你可能注意到所有的endpoint都提供一个地址属性。为啥这样?这使一般的endpoint可以使用URI的方式配置目的地址 ,取代了设置endpoint多个属性值的方式。

三种情况下这是有用的:

1、一个地址可以用在一个endpoint的单独属性里。例如 endpoint使用HTTP传输时,

             可以明确的配置完整的地址,而不用再单独的设置主机、端口、和路径。

2、当使用MuleClient时,地址是用来发送消息或从mule应用接收消息的。

3、不常见的是,一般的endpoint没有传输的命名空间可用。当你想根据不同的环境使用不同的传输时可能是

       有用的。 (例如根据 是否部署了应用决定使用 VM 传输还是使用 JMS传输)

 

 

 

 

3.1.2 使用 Mule Studio配置连接器

 

    配置连接器和配置endpoint非常的相似,使用 Mule Studio比直接配置XML更容易。只需简单的对endpoint右键选择属性,如图3.1



 

    图3.2 显示了一个HTTP endpoint的配置页面。

   可以通过点击References tab页的connector后的加号,定义HTTP的连接器。



 

    添加连接器后,References tab页的下拉列表就可用这个连接器了,像图3.3  和图3.4 所示。



 

 



 

 

 

    现在你应当可以通过xml和mule studio顺利的 配置 endpoint和连接器了。

 

 

 

    现在来看mule 内置的一些传输。下面是本章将看到的传输和云连接器:

   1、File transport  --从本地或网络文件系统读写数据

   2、HTTP transport --发送接受HTTP 请求,暴露和消费 web service

   3、JMS transport—- 分发和接受JMS消息

   4、Email transport-- 从 IMAP 服务器接收email,使用SMTP发送email

  5、FTP transport—从ftp服务器获取文件或发送文件到ftp服务器。

  6、JDBC transport--使用jdbc读写关系型数据库

  7、MongoDB cloud connector—从MongoDB读写数据

  8、VM transport--使用虚拟内存传输来实现可靠的方式

  9、Twitter cloud connector--和Twitter API交互

 

这篇关于mule in action翻译13 : 3.1 理解连接器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/843987

相关文章

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

如何通俗理解注意力机制?

1、注意力机制(Attention Mechanism)是机器学习和深度学习中一种模拟人类注意力的方法,用于提高模型在处理大量信息时的效率和效果。通俗地理解,它就像是在一堆信息中找到最重要的部分,把注意力集中在这些关键点上,从而更好地完成任务。以下是几个简单的比喻来帮助理解注意力机制: 2、寻找重点:想象一下,你在阅读一篇文章的时候,有些段落特别重要,你会特别注意这些段落,反复阅读,而对其他部分

深入理解数据库的 4NF:多值依赖与消除数据异常

在数据库设计中, "范式" 是一个常常被提到的重要概念。许多初学者在学习数据库设计时,经常听到第一范式(1NF)、第二范式(2NF)、第三范式(3NF)以及 BCNF(Boyce-Codd范式)。这些范式都旨在通过消除数据冗余和异常来优化数据库结构。然而,当我们谈到 4NF(第四范式)时,事情变得更加复杂。本文将带你深入了解 多值依赖 和 4NF,帮助你在数据库设计中消除更高级别的异常。 什么是

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

分布式系统的个人理解小结

分布式系统:分的微小服务,以小而独立的业务为单位,形成子系统。 然后分布式系统中需要有统一的调用,形成大的聚合服务。 同时,微服务群,需要有交流(通讯,注册中心,同步,异步),有管理(监控,调度)。 对外服务,需要有控制的对外开发,安全网关。