1. 消息是JMS的一种类型对象,由两部分组成:报头和消息主体。报头由路由信息以及有关该消息的元数据组成。
2. 根据有效负载的类型来划分:
简单文本(TextMessage)
可序列化的对象(ObjectMessage)
属性集合(MapMessage)
字节流(BytesMessage)
原始值流(StreamMesage)
无有效负载的消息(Message)
3. 支持两种模型
点对点模型(point to point PTP)
发布者/订阅者模型(publish/subscribe) pub/sub
4. JMS只是接口,并没有给与实现,实现JMS接口的消息中间件成为JMS Provider
5. 开发JMS的步骤
广义上说,一个JMS应用是几个JMS客户端交换信息,开发JMS应用程序由以下几步构成:
用JNDI得到ConnectionFactory对象
用JNDI得到目标队列或主题对象,及Destination对象
用ConnectionFactory创建Connection对象
用Connection对象创建一个或多个JMS Session
用Session和Destination创建MessageProducer和MessageConsumer
通知Connection开始传递消息
6. ProduceràConnectionFactoryàConnectionàsessionà(Message/Destination)
Destination+SessionàProducer
Destination+SessionàMessageConsumer
7.
8. 消息类型
结构化或半结构化的消息类型:MapMessage,ObjectMessage,StreamMeaasge
非结构化或自由格式:TextMessage,BytesMessage
9. JMS能在JAVAEE五花八门的协议里,webservice满天飞的时候占有一定的位置,是因为:
它可以把不影响用户执行效果又比较耗时的任务(比如发送邮件通知管理员)异步的扔给JMS服务端去做,而尽快的把屏幕返回给用户
服务端能够多线程排队响应高并发的请求,并保证请求不丢失
可以在java世界里达到最高的解耦,客户端与服务端无需直连,甚至无需知晓对方是谁、在哪里、有多少人,只要对流过的嘻嘻做响应就行了,在企业应用环境发扎的时候,作用明显
10. ActiveMQ的特性
完全支持JMS1.1和JAVAEE1.4规范的JMS Provider实现,也是Apache Geronimo默认的JMS Provider
POJO without Ejb Container,不需要实现Ejb复杂的Message Bean接口配置
Spring base,可使用spring IOC,AOP
EFFECTIVE,基于JCA Container实现
11. 连接的Url failover:(tcp://localhost:61616)
其中failover关键字表示客户端与ActiveMQ server的连接中断后,客户端会自动重新连接