本文共 1118 字,大约阅读时间需要 3 分钟。
消息传递保证
大多数消息系统的一个主要功能就是消息传递的准确,消息保障就是指对于一个消息,一个消费者只能接受一次,并且只能一次,即使事件发送失败了。这是很多业务的重要保障,比如你网上购物不希望收到多次订单,也不希望丢失订单。
另一方面,有时候你可能不关心丢失一次或者得到多次。比如,股票价格的消息,价格可能被下一个价格消息很快覆盖,不用太关心他的价格消息准确性。
系统允许可以定义自己的规则。
Transaction
消息系统支持在一个本地事务总发送多个消息和多个回执。HornetQ支持发送和接受消息作为全局事务的一部分。比如XA,JTA等
Durability
消息可以持久化也可以不持久化,持久化消息将会保存在存储设备中,在消息失败或者重启的时候仍然可以发送,非持久化消息不能再失败和重启的时候存活。持久化的例子比如订单或者交易,消息是不可以丢失的。非持久化的消息比如股票的价格消息
Messaging APIs and protocols
如何让客户端应用程序发送和消费消息呢?
几个系统提供了私有的API,与消息系统进行交互。
消息系统也提供了几个标准的规范,下面介绍一下
他是Sun JEE规范的一部分,他包含了消息队列和订阅/分发模式,JMS是一个消息的通用的最小的集合,JMS是一个非常有名的API,大部分的消息系统已经实现了,他只能使用JAVA,
JMS没有定义标准的实现方式,只定义了一套标准的纲领性的API解决使用不同的厂商自己的私有的协议客户端和服务端不可以直接交互
HornetQ提供了JMS1.1的全部功能支持
许多系统提供了他们自己的API,这样做的好处,就是他们支持自己的全部的功能给客户端,想Jms API是不能完全暴露消息系统的功能,HornetQ提供了自己的API,如果你想要比Jms更强的功能,那你就可以使用它自身的私有API。
Clusters
很多消息系统支持创建一个消息系统组,叫做集群,集群允许消息的发送和接受到不同的服务器上,允许你的系统横向添加新的服务器。
不同的消息系统对于集群的支持是不一样的,HornetQ提供了可配置的消息集群,他可以非常聪明的分配消息,后面详细叙述。
Bridges and routing
一些消息系统允许单独的集群之间进行消息搭桥,典型的通过不可靠的广域网链接或者internet,一个桥接就是一个系统的消息队列到另外一个系统的消息队列,桥接采用不可靠链接,在连接不可用以后能够自动重连。
HornetQ桥可以配置过滤器表达式到一个认证中心,事务也可以保持,
转载地址:http://cnmhj.baihongyu.com/