04_Java通信_JMS概念
前面三章描述了Java通信中的JNDI通过两个小例子说明怎样远程调用对象。这篇文件介绍一下JMS的概念
快速链接:
01_Java通信_JNDI_概念
03_Java通信_JNDI_demo2远程调用weblogic的数据源
正式进入JMS
message queue:消息队列
MQ一般都做为企业级IT应用的中间件存在,有很多企业是作为标准IT基础结构存在的。在市面上常见的MQ中间件有IBM websphere message queue service,Oracle Advanced Queuing,Microsoft Message Queue(MSMQ),Apache ActiveMQ等,其中apache ActiveMQ是基于apache协议的,和tomcat一样,你可以在项目中免费使用,MSMQ是Windows的组件,默认是不被安装的,可以在“添加/删除组件”中安装MSMQ(不同版本的Windows对应的MSMQ版本是不同的,XP/2003是3.0,Vista是4.0)。
在Java中,使用主要使用JMS(Java Message Service)来实现MQ,可以选择的厂商Apache ActiveMQ。
后面将会介绍两个简单的小demo。在demo中使用的就是Apache ActiveMQ。
JMS:(Java Message Service,Java消息服务)可以理解为在两个应用程序中进行的消息来往。例如:一个大公司中可能两个项目用了不同的技术:A应用程序是用Java写的,B应用程序可能用C++写的。如果A和B需要数据交换,这是就可以使用JMS——异构集成。
应用程序到应用程序(application to application)类型的信息传递系统,在用于业务系统中,称为企业消息传递系统,或者称为面向消息的中间件(message oriented Middleware MOM)。
JMS和JDBC类似,Java提供接口,厂商提供实现
JMS优点:
异构集成
缓解系统瓶颈
提高可伸缩性
提高最终用户生产率
体系结构灵活性和敏捷性
PS:以上是摘自《Java消息服务》
企业消息传递:
客户端:消息传递系统由消息传送客户端和几种消息传送中间件服务器所组成。客户端向消息传送服务器发送消息,该服务器随后再将那些消息分发给其他客户端。客户端是使用消息传送API的一个业务应用程序或者构件,在这里可以指JMS
JMS消息模型
点对点(1:1)
发布者(生产者)发布一条消息,这条消息进入Topic,所有订阅这个Topic的订阅者(消费者)都会收到消息的副本
基于发布/订阅(1:N)
发布者(生产者)发送一条消息,消息进入队列,只会有一个接收者接收这个消息
JMS API
公共API | 点对点API | 发布/订阅API |
ConnectionFactory |
QueueConnectionFactory | TopicConnectionFactory |
Destination | Queue | Topic |
Connection | QueueConnection | TopicConnection |
Session | QueueSession | TopicSession |
Message | Message | Message |
MessageProducer | QueueSender | TopicPublisher |
MessageConsumer | QueueReceiver | TopicSubscriber |
下一节实现一个发布/订阅消息模型的demo这样理解起来会更加简单