自已整理的一些零散的知识点

简介

AMQP(消息队列协议,Advanced Message Queuing Protocol)是一种消息协议 ,等同于JMS,但是JMS只是java平台的方案,AMQP是一个跨语言的协议。

AMQP 不分语言平台,最初来自JPMorgon,因为业务需要而滋生,很快从金融界推广到整个计算机界流行起来。

AMQP 目前还是一个草案,最新版本是:0.10


Publisher --->Exchange ---> MessageQueue --->Consumer

整个过程是异步的.Publisher,Consumer相互不知道对方的存在

Exchange负责交换/路由,依靠Routing Key,每个消息者有一个Routing Key

每个Binding将自已感兴趣的RoutingKey告诉Exchange,以便Exchange将相关的

消息转发给相应的Queue


几个概念

Producer,Routing Key,Exchange,Binding,Queue,Consumer.

Producer: 消息的创建者,消息的发送者

Routing Key:唯一用来映射消息该进入哪个队列的标识

Exchange:负责消息的路由,交换

Binding:定义Queue和Exchange的映射关系

Queue:消息队列

Consumer:消息的使用者


Exchange类型

Fan-Out:类似于广播方式,不管RoutingKey

Direct:根据RoutingKey,进行关联投寄 

Topic:类似于Direct,但是支持多个Key关联,以组的方式投寄。

      key以.来定义界限。类似于usea.news,usea.weather.这两个消息是一组的。


QPID

QPID是AMQP的一个实现,提供C++,JAVA版本的broker,支持多种语言客户端。

基本功能外提供以下特性:

采用 Corosync(?)来保证集群环境下的Fault-tolerant(?) 特性

支持XML的Exchange,消息为XML时,彩用Xquery过滤

支持plugin

提供安全认证,可对producer/consumer提供身份认证

qpidd --port --no-data-dir --auth

port:端口

--no-data-dir:不指定数据目录

--auth:不启用安全身份认证


启动后自动创建一些Exchange,amp.topic,amp.direct,amp.fanout

tools:

Qpid-config:维护Queue,Exchange,内部配置 

Qpid-route:配置broker Federation(联盟?集群?)

Qpid-tool:监控


参考:

关于AMQP更多信息可参考: http://www.openamq.org/doc:amqp-background

关于QPID的更多和使用可参考:http://qpid.apache.org/