JMS学习总结Ⅲ
JMS体、相、用
- JMS是一种规范,是标准的产生、发送、接收消息的规范
- 可以基于JMS规范实现多种应用系统通信
- 支持带有安全主题的消息传递、事务型消息、一致性消息、持久性订阅者
- JMS的一个场景(工厂生产==>备件==>采购)
JMS两种通信类型
- 点对点(point-to-point),一个消息只有一个接收者
- 发布/订阅(publish/subscription),一个消息可以有多个接收者
- Use PTP messaging when every message you send must be processed successfully by one consumer.
- Use pub/sub messaging when each message can be processed by zero, one, or many consumers.
JMS消息体的样子
- 头(header):标准字段集,客户机和服务商都用来标识和路由消息
- 属性(property):提供类似Java Bean的内容set <Type> property和get <Type> property,服务商选择性的支持
- 体(body):消息内容,不同消息接口特定于不同内容类型
不同的JMS消息类型
虽然JMS类型不同,但都是Message接口的实现
- StreamMessage:负责传递基于Java基础流的内容
- MapMessage:一组Key-Value内容,key为String,value为具体Java基本类型
- TextMessage:一个大的String
- ObjectMessage:支持Serializable的内容
- BytesMessage:字节流内容
- XMLMessage:扩展TextMessage,但有了自描述操作就方便多了
消息是收到了呢?还是没有收到!
使用消息确认模式概念来标识消息是收/未收,事务模式下是不会区分消息模式的。
五种消息确认模式
- AUTO_ACKNOWLEDGE自动确认模式,只有接收方有返回就算收到了,具体异常还是正常不要管。
- CLIENT_ACKNOWLEDGE客户端确认模式,接收方要调用acknowledge方法,其它情况视为未接收,批量确认是有规定的,最后一个或一次消息调用acknowledge方法。
- DUPS_OK_ACKNOWLEDGE允许重复确认模式
- NO_ACKNOWLEDGE不确认模式
- MULTICAST_NO_ACKNOWLEDGE:IP组播下的不确认模式
参考资料
- http://activemq.apache.org/version-5-getting-started.html
- http://activemq.apache.org/examples.html
- http://www.oracle.com/technetwork/java/jms/index.html