消息中间件:
在分布式系统中完成消息的发送和接收的基础软件。
JMS:
JMS的全称是Java Message Service,即Java消息服务。它主要用于在生产者和消费者之间进行消息传递,
生产者负责产生消息,而消费者负责接收消息。把它应用到实际的业务需求中的话我们可以在特定的时候利用生
产者生成一消息,并进行发送,对应的消费者在接收到对应的消息后去完成对应的业务逻辑。对于消息的传递有
两种类型,一种是点对点的,即一个生产者和一个消费者一一对应;另一种是发布/订阅模式,即一个生产者产生
消息并进行发送后,可以由多个消费者进行接收。
JMS的应用接口:
ConnectionFactory --连接工厂,用户用来创建到JMS提供者的提供者的连接的被管对象
Connection——连接代表了应用程序和消息服务器之间的通信链路
Destination——目标,消息的发布和接收的地点,或者是队列,或者是主题
MessageProducer——消息生产者,由会话创建的对象,用于发送消息到目标
MessageConsumer——由会话创建的对象,用于接受发送到目标的消息
Message——消息,是在消费者和生产者之间传送的对象
Session——会话,表示一个单线程的上下文,用于发送和接受消息。
JMS点对点队列模型的特点:
1、消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费消息
2、消息被消费以后,queue中不再有存储,所以消息消费者不可能消费到已经被消费的消息
3、queue支持多个存在的消费者,但是对一个消费而言,只会有一个消费者可以消息
JMS的发布者、订阅者模式
1、消息生产者将消息发布到topic中,同时多个消息消费者订阅消费该消息。
2、发布到topic的消息会被所有订阅者消费
ActiveMQ的安装在此不在讲述,安装后我们可以看到如下页面,在此我们讲述一下控制面板里面关键字:
1、Number of Pending Messages:等待消费的消息,这个是当前未出队列的数量,可以理解为总的接受的数量减去总的出队列的数量
2、Number of Consumers:消费者,这个是消费者端的消费者数量
3、Messages Enqueued:进入队列的消息,可以理解为消费者消费的数量。这个数量只增不减,重启acmq会变成0.在点对点的模式中,由于一个消费只能被成功的消费一次,所以他和进入队列的总数量是相等的。如果不相等,是因为消费者还没有来得及消费,在订阅发布模式下,他因为消费者多,而导致会比如队列数量高,
4、Messages Dequeued:已经出列多少个消息。
下篇博客介绍 一下代码。