AMQP与QPID简介

jopen 12年前
     <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;"><strong style="line-height:1.4;">简介</strong></p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">AMQP(消息队列协议,Advanced Message Queuing Protocol)是一种消息协议 ,等同于JMS,但是JMS只是java平台的方案,AMQP是一个跨语言的协议。</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">AMQP 不分语言平台,最初来自JPMorgon,因为业务需要而滋生,很快从金融界推广到整个计算机界流行起来。</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">AMQP 目前还是一个草案,最新版本是:0.10</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;"><br style="line-height:1.4;" /> </p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">Publisher --->Exchange ---> MessageQueue --->Consumer</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">整个过程是异步的.Publisher,Consumer相互不知道对方的存在</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">Exchange负责交换/路由,依靠Routing Key,每个消息者有一个Routing Key</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">每个Binding将自已感兴趣的RoutingKey告诉Exchange,以便Exchange将相关的</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">消息转发给相应的Queue</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;"><br style="line-height:1.4;" /> </p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;"><strong style="line-height:1.4;">几个概念</strong></p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">Producer,Routing Key,Exchange,Binding,Queue,Consumer.</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">Producer: 消息的创建者,消息的发送者</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">Routing Key:唯一用来映射消息该进入哪个队列的标识</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">Exchange:负责消息的路由,交换</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">Binding:定义Queue和Exchange的映射关系</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">Queue:消息队列</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">Consumer:消息的使用者</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;"><br style="line-height:1.4;" /> </p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;"><strong style="line-height:1.4;">Exchange类型</strong></p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">Fan-Out:类似于广播方式,不管RoutingKey</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">Direct:根据RoutingKey,进行关联投寄 </p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">Topic:类似于Direct,但是支持多个Key关联,以组的方式投寄。</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">      key以.来定义界限。类似于usea.news,usea.weather.这两个消息是一组的。</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;"><br style="line-height:1.4;" /> </p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;"><strong style="line-height:1.4;">QPID</strong></p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">QPID是AMQP的一个实现,提供C++,JAVA版本的broker,支持多种语言客户端。</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">基本功能外提供以下特性:</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">采用 Corosync(?)来保证集群环境下的Fault-tolerant(?) 特性</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">支持XML的Exchange,消息为XML时,彩用Xquery过滤</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">支持plugin</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">提供安全认证,可对producer/consumer提供身份认证</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">qpidd --port --no-data-dir --auth</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">port:端口</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">--no-data-dir:不指定数据目录</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">--auth:不启用安全身份认证</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;"><br style="line-height:1.4;" /> </p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">启动后自动创建一些Exchange,amp.topic,amp.direct,amp.fanout</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">tools:</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">Qpid-config:维护Queue,Exchange,内部配置 </p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">Qpid-route:配置broker Federation(联盟?集群?)</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">Qpid-tool:监控</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;"><br style="line-height:1.4;" /> </p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">参考:</p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">关于AMQP更多信息可参考: <a style="line-height:1.4;color:#7594b3;" href="/misc/goto?guid=4959500682668889822" rel="nofollow" target="_blank">http://www.openamq.org/doc:amqp-background</a></p>    <p style="padding-bottom:0px;line-height:1.4;margin:0px 0px 10px;padding-left:0px;padding-right:0px;padding-top:0px;">关于QPID的更多和使用可参考:<a style="line-height:1.4;color:#7594b3;" href="/misc/goto?guid=4958187024151502203" rel="nofollow" target="_blank">http://qpid.apache.org/</a></p> 来自:    <a href="/misc/goto?guid=4959500682776950749" target="_blank">http://www.blogjava.net/cdredfox/archive/2012/01/02/367727.html</a>