一、JMS

消息发送的标准API。JMS 为Java程序提供了一种创建、发送、接收和读取企业消息系统中消息的通用方法。它们的底层实现技术各不相同,比如Sun MQ, IBM MQ,BEA MQ,Apache ActiveMQ等。

包括:

点对点模型:一条消息仅能被一个consumer收到。如果在message发送的时候没有可用的consumer,那么它将被保存一直到能处理该message的consumer可用。如果一个consumer收到一条message后却不响应它,那么这条消息将被转到另一个consumer那儿。一个Queue可以有很多consumer,并且在多个可用的consumer中负载均衡。

发布/订阅模型:一条消息被publish时,它将发到所有感兴趣的订阅者,所以零到多个subscriber将接收到消息的一个拷贝。但是在消息代理接收到消息时,只有激活订阅的subscriber能够获得消息的一个拷贝。

二、常见消息格式

StreamMessage -- Java原始值的数据流   

MapMessage--一套名称-值对   

TextMessage--一个字符串对象    

ObjectMessage--一个序列化的 Java对象 

BytesMessage--一个未解释字节的数据流

三、JMS应用程序接口

ConnectionFactory 接口(连接工厂):用户用来创建到JMS提供者的连接

Connection 接口(连接):连接代表了应用程序和消息服务器之间的通信链路。在获得了连接工厂后,就可以创建一个与JMS提供者的连接。根据不同的连接类型,连接允许用户创建会话,以发送和接收队列和主题到目标。

Destination 接口(目标):目标是一个包装了消息目标的标识符,消息目标是指消息发布和接收的地点,或者是队列,或者是主题。

MessageConsumer 接口(消息消费者):由会话创建的对象,用于接收发送到目标的消息。消费者可以同步地(阻塞模式),或异步(非阻塞)接收队列和主题类型的消息。 

MessageProducer 接口(消息生产者):由会话创建的对象,用于发送消息到目标。用户可以创建某个目标的发送者,也可以创建一个通用的发送者,在发送消息时指定目标。

Message 接口(消息):是在消费者和生产者之间传送的对象。

Session 接口(会话):表示一个单线程的上下文,用于发送和接收消息。

JMS_第1张图片