资源预览内容
第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
第9页 / 共13页
第10页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
MQ技术选型消息中间件的传递模式一般有两种传递模型:点对点模型(PTP)和发布-订阅模型(Pub/Sub)。1点对点模型(PTP)点对点模型用于消息生产者和消息消费者之间点到点的通信。消息生产者将消息发动到由某个名字标识的特定消费 者。这个名字实际上对应于消息服务中的一个队列(Queue),在消息传动给消费者之前它被存储在这个队列中。队列可 以是持久的,以保证在消息服务出现故障时仍然能够传递消息。2发布-订阅模型(Pub/Sub)发布-订阅模型用称为主题(topic)的内容分层结构代替了 PTP模型中的惟一目的地,发送应用程序发布自己的消 息,指出消息描述的是有关分层结构中的一个主题的信息。希望接收这些消息的应用程序订阅了这个主题。订阅包含子主 题的分层结构中的主题的订阅者可以接收该主题和其子主题发表的所有消息。下图展示了发布和订阅模型:PublisherAcme*PublisherEtOGkquotes/BrokerSubscriberSubscribertoekquotes0Subscriberockquotes/My Co多个应用程序可以就一个 主题发布和订阅消息,而应用程序对其他人仍然是匿名的。MOM(Message Oriented Middleware,面向消息的中间件)起 着代理(br oke r)的作用,将一个主题已发表的消息路由给该主题的所有订阅者。常见消息协议STOMP协议STOMP,Streaming Text Orientated Message Protocol,是流文本定向消息协议,是一种为MOM设计的简单文本 协议。它提供了一个可互操作的连接格式,允许STOMP客户端与任意STOMP消息代理(Broker)进行交互,类似于OpenWire(种二进制协议)。 是 Apache ActiveMQ。STOMP协议工作于TCP协议之上,使用了下列命令:* SEND发送* SUBSCRIBE 订阅* UNSUBSCRIBE 退订* BEGIN开始* COMMIT 提交* ABORT取消* ACK确认* DISCONNECT 断开AMQP协议AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的 中间件设计。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。AMQP在消息提供者和客户端的行为进行了强制规定,使得不同卖商之间真正实现了互操作能力。JMS是早期消息中间件进行标准化的一个尝试,它仅仅是在API级进行了规范,离创建互操作能力还差很远。与JMS不同,AMQP是一个Wire级的协议,它描述了在网络上传输的数据的格式,以字节为流。因此任何遵守此数据 格式的工具,其创建和解释消息,都能与其他兼容工具进行互操作。AMQP 的实现有:RabbitMQ ,0penAMQ 等。常见消息中间件产品Active MQActive MQ是一个基于Apcache 2.0 licenced发布,开放源码的JMS产品。其特点为:1)提供点到点消息模式和发布/订阅消息模式;2)支持JBoss、Geronimo等开源应用服务器,支持Spring框架的消息驱动;3)新增了一个P2P传输层,可以用于创建可靠的P2P JMS网络连接;4)拥有消息持久化、事务、集群支持等JMS基础设施服务。HornetQDocument: http:/docs.jboss.org/hornetq/2.2.14.Final/user- manual/en/htm1/indexhtmlHornetQ是一个支持集群和多种协议,可嵌入、高性能的异步消息系统。HornetQ完全支持JMS, HornetQ不但支持JMS1.1API同时也定义属于自己的消息API,这可以最大限度的提升HornetQ的性能和灵活性。在不久的将来更多的协议将被HornetQ 支持。HornetQ拥有超高的性能,HornetQ在持久化消息方面的性能可以轻易的超于其它常见的非持久化消息引擎的性能。当然,HornetQ 的非持久化消息的性能会表现的更好!HornetQ完全使用POJO,纯POJO的设计让HornetQ可以尽可能少的以来第三方的包。从设计模式来说,HornetQ这样的设 计入侵性也最小。HornetQ既可以独立运行,也可以与其它Java应用程序服务器集成使用。HornetQ拥有完善的错误处理机制,HornetQ提供服务器复制和故障自动转移功能,该功能可以消除消息丢失或多个重复信 息导致服务器出错。HornetQ提供了灵活的集群功能,通过创建HornetQ集群,您可以享受到到消息的负载均衡带来的性能提升。您也可以通 过集群,组成一个全球性的消息网络。您也可以灵活的配置消息路由。HornetQ拥有强大的管理功能。HornetQ提供了大量的管理API和监控服务器。它可以无缝的与应用程序服务器整合,并共同工作在一个HA环境中ActiveMQ 和 HornetQ 的比较:特点Horne tQ2.0GA客户端语言Java, JMS1.1 Stomp应用协议STOMP支持的传送协议TCP,SSL,HTTP 等监测jms消息支持Ac tiveMQ5.3.0Java,C#,C 等 jms1.1,jms1.2OpenWire,S tomp REST,WSNo tifica ti on,XMPP,AMQPIn-VM,TCP,SSL,NIO,UDP,JGoup,JXTA 等 支持消息目标队列的分类集群JMX监控和管理JMS到JMS的Bridge的方式在集群中消息组和排他性消费。使用 rts他)可虛拟目标队列,镜像队列(队列自动复以使用过滤相匹配消息被转移制)和复合目的地队列1发布消息通过广播(UDP组播)或固定客户端和服务端2. 支持负载均衡3. 消息的重分发:发送前,配置 无消费者对消息的重新分发的参 数。4. 容错机制(failover):主备服务器(每一个主服务器只能有一 个冷备份服务器)5高可用性:异步日志复制从主 到备(快)或者通过共享文件系 统的共享存储(有没有需要复 制)支持,包含一个web控制台支持,HQ到HQ和HQ到任何JMS1.1的服务器。一次只能提供 一次,并保证在HQ到HQbridges.支持1发送消息通过广播(UDP组播或者零配 置)或者固定的客户端和服务端。2. 支持负载均衡3. 容错机制(failover):主备服务器(每一个主服务器只有一个备服务器)4. 静态或者动态的发布。5. 针对消息的broker的重分发。6高可用性:从主服务器异步日志到备份 服务器(快),或者通过JDBC通过共享 文件系统存储(慢)或者共享存储(有没 有需要复制)支持支持性能(Performance)测试工具SpecJMS压力测试JMeter的性能测试持久化仅支持异步日志系统(journal),提供两种方式: l.Java NIO2.linux AIO (仅支持 linux2.6以上的版本)支持多种方式:1. KahaDB (比较好的可扩展性,更短的恢 复时间。)2. AMQ消息存储(快)3. JDBC数据库(比较慢)安全身份验证和授权的JAAS的配置文 件中定义。7中不同的权限。JAAS的身份验证和配置文件授权。3中不 同的权限(读,写,管理)Blob和Large消息的支持支持支持调度传递(Schedule delivery)支持支持(使用 Schedule CronParser)消息转换(xml转换为对象)支持,但是仅仅在HQ和HQ Bridge 之间。支持(其中Spring提供具体的实现方 案)异步发送支持支持Acknowledge 优化前置 Acknowledge批量Acknowledge,异步消息传递生产者流程控制支持(仅仅在window)支持(仅仅在window)慢消费消息的处理支持支持拦截器架构支持,在包一级传入的数据库捕 获支持,使用一个拦截器栈捕获传入的消息通配符的支持(Wil dCard)支持支持XPATH的支持不支持支持重新传递策略延迟交还和DLQDLQ,丢失的消息将无法在交付。消息优先级和权重的设置不支持支持命令代理不支持支持在ActiveMQ4.2以上AMQP支持不支持支持SOAP协议Web服务的支持不支持支持,使用Apache Axis和CXFJEE应用服务整合支持,使用JCA RA支持,使用JCA RA超时消息的目标地址支持不支持检查重复的消息支持不支持集群中服务端的负载均衡支持支持客户端负载均衡(loadbalance)支持(随机和循环)不支持客户端容错机制(failover)支持,自动故障转移和应用管理 模式支持,随机和循环使用故障转移协议Vm传输支持支持对Ajax的支持未知支持对Spring的支持RabbitMQRabbitMQ是由LShift提供的一个AMQP的开源实现,由以高性能、健壮以及Scalability出名的Erlang写成, 因此也是继承了这些优点。AMQP里的两个主要组件:Exchange和Queue,绿色的X就是Exchange,红色的是Queue,这两者都在 Server端,又称作Broker,这部分是RabbitMQ实现的,而蓝色的则是客户端,通常有Producer和Consumer两 种类型:Applications Produce MessagesExchangesRoute and Filter MessagesQueuesStare and ForwiardMessagesApplications consume MessagesClients 丨 Server (aka. Broker)i ClientsiiAMQP有四个非常重要的概念:虚拟机(virtual host),交换机(exchange),队列(queue)和绑定(binding)。I)A虚拟机:通常是应用的外在边界,我们可以为不同的虚拟机分配访问权限。虚拟机可持有多个交换机、队列和 绑定。a交换机:从连接通道(Channel)接收消息,并按照特定的路由规则发送给队列。A队列:消息最终的存储容器,直到消费客户端(Consumer)将其取走。a绑定:也就是所谓的路由规则,告诉交换机将何种类型的消息发送到某个队列中。通常的操作流程是:a消费者:创建信息通道。a(2)消费者:定义消息队列。a(3)消费者:定义特定类型的交换机。a(4)消费者:设定绑定规则(包括交换机名称、队列名称以及路由键)。a(5)消费者:等待消息。a(6)生产者:创建消息。A(7)生产者:将消息投递给信息通道(注明接收交换机名称和路由键)。A(8)交换机:获取消息,依据交换机类型决定是否匹配路由规则(如需匹配,则对比消息路由键和绑定路由 键)。A(9)消费者:获取并处理消息,发送反馈。A(10)结束:关闭通道和连接。队列定义参数:
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号