现在的位置: 首页 > 综合 > 正文

TIBCO Enterprise Message Service功能介绍

2013年09月15日 ⁄ 综合 ⁄ 共 3731字 ⁄ 字号 评论关闭
 

TIBCO Enterprise Message Service功能介绍

Java Message Service 1.1(JMS)是用来定义应用之间消息传递的Java框架规范。Sun公司与TIBCO公司等多家公司合作开发了这个规范,用来定义企业应用之间统一的消息传递接口。

消息传递服务用来集成企业内部的应用。例如,您可能拥有多个应用系统:一个是客户关系管理、一个是产品库存管理,另外一个是生产物料跟踪系统。每个应用系统对于企业运营都非常关键,但是更为重要的是系统之间的沟通以实现业务流程的平滑流转。面向消息的中间件(Message-oriented-middleware, MOM)为应用之间的通信创建了统一的通信协议,帮助使用者更加方便地实现企业计算环境中已有应用和新增应用的集成。

JMS框架定义的是接口规范,而不是具体的实现,因此JMS只是为消息中间件的开发提供了基础,TIBCO公司的产品TIBCO Enterprise Message Service就是JMS标准规范的实现。以下我们将描述JMS的概念和TIBCO Enterprise Message Service的实现。

JMS消息传递模型
JMS基于消息的创建和传递。“消息”是一个应用发送给另外一个应用的结构化数据。消息的创建者称为“生产者(producer)”,而消息的接收方称为“使用者(comsumer)”。TIBCO Enterprise Message Service作为消息传递的中介,把消 息送给正确的目的地。而且产品本身提供了企业级的特性,如容错、消息路由等,并可以与其他消息中间件如TIBCO Rendezvous进行通信。

JMS支持两种消息传递模型:
 点对点(Point-to-point,queues
 发布/订阅(Publish and subscribe ,topics

点对点
点对点消息传递模式中,每个消息有一个生产者和一个使用者。这种消息传递方式使用“队列”来存储消息,一直到消息被接收到为止。消息的生产者把消息送给队列,消息使用者从队列中取出消息,并发送消息已经收到的确认信息。
 
可以有多个消息生产者向同一个队列发送消息,也可以有多个消息使用者从同一个队列中取消息。如果需要的话,可以把队列配置成“排他的”,如果把队列配置为“排他队列”,则所有的队列消息只能被指定该队列的第一个使用者取出。排他队列适用于仅仅需要一个应用从一个队列中取出消息的时候。如果队列是非排他的,则任意多的接收者可以从队列中取出消息,这种方式适用于需要在多个消息接收者之间进行负载均衡的情况。无论队列是排他的还是非排他的,队列中的每条消息,只有一个使用者可以从中取出消息。

 
发布/订阅
在发布/订阅的消息传递模式下,消息生产者使用“主题(topic)”标记消息,这种模式中,生产者称为“发布者”而使用者则称为“订阅者”。
 
多个发布者可以使用相同的主题发布消息,从一个发布者发布的消息可以被多个订阅者接收。订阅者订阅某个主题的消息,所有使用这个主题发布的消息都可以被所有订阅这个主题的订阅者收到。由于这些消息在网络上面传递并可以被所有感兴趣的订阅者所接收,非常类似于生活中的无线电或电视信号的传播,因此这种方式通常也称为“广播式消息传递”。
 
在发布/订阅模型中存在着一种时间依赖性。在缺省情况下,订阅者只有在活动状态时才能够收到消息,如果在消息发送出来的时候订阅者处于不可用状态时,它收不到这个消息。JMS的API中定义了一个方法来部分消除这种时间依赖:允许把订阅者创建为“持久订阅型”,这时候所有持久订阅的消息存储在服务器上,直到这些消息过期或者达到服务器上存储限制。持久订阅可以保证,即使在消息发布出来时订阅者处于不可用状态,其也可以收到这条消息。
目的地的桥接
此外,可以在不同的目的地之间定义桥接的方式,结合使用以上两种消息传递模式。如果应用需要把同一个消息发送到队列中并同时按照主题进行发布的时候,可以采用这种方法。
控制消息的流向
当消息生产者产生的消息的速度大大超过消息使用者接受消息的速度的时候,可以在服务器中控制消息的流量。
队列的性能特性
如果想提高性能,可以定义队列接收者能够在后台接受批量消息。或者,如果能够保证没有任何队列接收者在同一时刻接受超过一条的消息,可以定义队列接收者在同一时刻只能接受一条消息。
其他的队列和主题特性
TIBCO Enterprise Message Service为主题或者队列定义一些参数来增强两种消息传递模式的功能。消息目的地在创建的时候可以指定这些参数。增强的功能参数包括:
 错误恢复模式:可以把消息同步写道磁盘上面来保证其时出现服务器错误的情况下仍然不丢失信息。
 强制权限控制:可以在队列或者主题层面定义权限,这样消息的目的地可以允许进行权限控制
 可以设置存储在队列中的消息的大小,如果接受者长时间无法接收消息,队列中的消息会积压并耗费机器资源影响性能。
 可以限制持久订阅中消息的大小,如果订阅者长时间无法接收消息,主体消息会积压并消耗机器资源。
 发送到目标地点的消息可以路由到其他服务器上
 队列可以接收到TIBCO Rendezvous消息,而主题可以发送或者接受TIBCO Rendezvous消息
 可以把队列设置成排他或非排他。如果设置为排他队列,只有一个接收者收到消息,如果设置为非排他,则可以有多个接收者从队列接收消息。
 队列可以设置重新传输政策,如果某条消息需要重新传送,可以在队列参数中设定每条消息重新传输的最大次数。
 所有发送到某目的地的消息可以被记载和跟踪
 消息产生者的用户名称可以包含在发布的消息中
 TIBCO Enterprise Message Service中可以使用带有通配符的目的地,所有匹配通配符的目的地名称都使用相同的特性。
 
容错
TIBCO Enterprise Message Service可以配置为一个成组的、主/从的容错模式,每个主服务器/次服务器组对中,主服务器接受客户端的连接并执行相应的消息传递功能,次服务器作为错误情况下的备份。主/次服务器容错对之间必须有物理或逻辑上的共享持久存储。例如,物理共享可能是基于共享的磁盘系统,而逻辑上面的共享可能是基于复制软件。客户端的应用正常情况连接主服务器,在主服务器出现错误的情况下自动连接次服务器。
 

TIBCO Enterprise Message Service的特色在于添加次服务器不会大幅度影响主服务器的消息处理性能。
服务器路由
TIBCO Enterprise Message Service可以实现多个JMS服务器之间的消息路由功能。基于主题的消息可以进行多步路由,而基于队列的消息最多可以从拥有该队列的服务器上面进行一个路由到其他服务器。TIBCO Enterprise Message Service服务器会存储——转发消息,这样在绝大多数情况下即使配置的路由连接中断重启后仍然能够工作。
 
JMS路由器使用管理界面进行配置,路由器在一个服务器上面配置,可以进行双向的通信。如果定义了两个服务器之间的路由,无论在那个服务器上面配置,两个服务器之间的消息都可以进行双向传递。
 
配置了路由器之后,只有标记了“global”的消息可以被路由,下图给出了服务器路由的示例。
 
在Server A上创建了一个到Server B的路由器,消息可以在两个服务器之间进行路由,服务器A上有两个主题,A和B,均设置成“global”,Server A中所有用主题A和B发送的消息都被路由给Server B。而Server B上面定义了两个主题A和B,但是只有B设置成“global”,这样,Server B上面订阅了主题A的接收者收到两个服务器上面所有用主题A发布的消息。而Server A上订阅了主题A的接收者只能接收到Server A上面发布的消息。而对于主题B来说,两个服务器均可以接收两个服务器上面的所有主题为B的消息
 
SSL连接
安全套接字层(Secure Sockets Layer (SSL)是在互联网或内部网上面传递加密数据的协议,SSL使用公钥和私钥来加密数据并在SSL连接上面传输。绝大部分浏览器支持SSL协议,很多站点和Java应用使用SSL协议传递保密的用户信息,如信用卡号码等。

TIBCO Enterprise Message Service 支持SSL协议。对SSL协议的支持表现在下列组件中:
 JMS Java客户端和TIBCO Enterprise Message Service服务器间的连接
 JMS C客户端和TIBCO Enterprise Message Service服务器间的连接
 管理工具和TIBCO Enterprise Message Service服务器间的连接
 路由器连接的和TIBCO Enterprise Message Service服务器间
 在容错配置的和TIBCO Enterprise Message Service服务器间

TIBCO Enterprise Message Service服务器和JMS C客户端之间使用OpenSSL支持SSL协议,也可以使用Ingrian Accelerator产品提高SSL通信的性能。

抱歉!评论已关闭.