Java技术回顾之JMS:JMS概念和模型
2008-01-13 18:23
176 查看
一、JMS相关概念
1、企业消息系统:
也称消息中间件(MOM,Message-Oriented Middleware),它允许应用程序之间通过消息的方式进行通信,它具有两个显著的特点:
应用程序之间通过虚拟的通道Destination来交换消息,发送者和接收者不必了解对方,只需知道对方的Destination和消息格式即可通信。
消息是异步传送的,每个消息都是一个自包含的单元,发送者无需等待接收者接收和处理消息。
2、JMS:
JMS(Java Message Service)是Java程序与企业消息系统进行交互的规范,它提供了一组API用于创建、发送、接收和读取消息。JMS定义了一组通用的消息概念和功能,旨在降低开发者访问企业消息系统的难度,同时最大化应用程序的可移植性。
3、JMS应用的几种角色:
JMS客户端(JMS Clients):利用JMS API访问消息服务的Java程序。
非JMS客户端(Non-JMS Clients):利用特定消息系统的专有API访问消息服务的程序。
消息(Messages):JMS应用之间发送和接收的数据实体。
JMS提供者(JMS Provider):实现JMS规范的企业消息系统。
管理对象(Administered Objects):企业消息系统中管理员预先配置供客户端调用的与具体实现无关的JMS对象。
4、管理对象:
JMS提供者内部实现各有不同,为了使JMS客户端不和特定的JMS提供者耦合,JMS通过管理对象来隔离JMS提供者的内部实现。主要有两种类型的管理对象:
ConnectionFactory:用于创建到JMS提供者的连接的工厂对象。
Destination:用来表示发送消息的目的地和接收到的消息的来源的对象。
消息系统的管理员将管理对象配置到指定的JNDI命名空间上。JMS客户端通过标准JNDI接口就可以访问这些管理对象。
二、JMS消息模型
1、Pub/Sub模型:
一对多广播消息模式。在Pub/Sub模型中,消息发送方称为Publisher,消息接收方称为Subscriber。主题Topic充当Publisher和Subscriber之间的中介,对某个Topic感兴趣的Subscriber在Topic上注册,Publisher将消息发送到指定的Topic,Topic上的消息将递送给所有注册的Subscriber。
Pub/Sub模型的主要特点:
对Topic上的一个消息,注册的每个Subscriber均得到该消息的一个拷贝。
Topic上的消息是自动递送给Subscriber的,不需要Subscriber去主动获取新消息,这种方式也称为推模式(Push Model)。
Publisher和Subscriber可以在运行时刻动态添加和删除。
2、P2P模型:
一对一消息模式。在P2P模型中,消息发送方称为Sender,消息接收方称为Receiver。队列Queue充当Sender和Receiver之间的中介,Sender将消息发送到指定的Queue,Receiver从指定的Queue上获取消息。
P2P模型的主要特点:
对Queue上的每个消息,即使有多个Receiver请求该消息,有且只有一个Receiver接收到该消息。即每个消息只能被一个Receiver消费,消费之后消息就从Queue上删除了。
Receiver需要到Queue上请求消息,而不是自动递给它的,这种方式也称为拉模式(Pull Model)。
Queue上的消息是有顺序的,消息按照它发送到Queue上的顺序被Receiver取走。
JMS提供了两组API来支持上面两组模型的应用。
1、企业消息系统:
也称消息中间件(MOM,Message-Oriented Middleware),它允许应用程序之间通过消息的方式进行通信,它具有两个显著的特点:
应用程序之间通过虚拟的通道Destination来交换消息,发送者和接收者不必了解对方,只需知道对方的Destination和消息格式即可通信。
消息是异步传送的,每个消息都是一个自包含的单元,发送者无需等待接收者接收和处理消息。
2、JMS:
JMS(Java Message Service)是Java程序与企业消息系统进行交互的规范,它提供了一组API用于创建、发送、接收和读取消息。JMS定义了一组通用的消息概念和功能,旨在降低开发者访问企业消息系统的难度,同时最大化应用程序的可移植性。
3、JMS应用的几种角色:
JMS客户端(JMS Clients):利用JMS API访问消息服务的Java程序。
非JMS客户端(Non-JMS Clients):利用特定消息系统的专有API访问消息服务的程序。
消息(Messages):JMS应用之间发送和接收的数据实体。
JMS提供者(JMS Provider):实现JMS规范的企业消息系统。
管理对象(Administered Objects):企业消息系统中管理员预先配置供客户端调用的与具体实现无关的JMS对象。
4、管理对象:
JMS提供者内部实现各有不同,为了使JMS客户端不和特定的JMS提供者耦合,JMS通过管理对象来隔离JMS提供者的内部实现。主要有两种类型的管理对象:
ConnectionFactory:用于创建到JMS提供者的连接的工厂对象。
Destination:用来表示发送消息的目的地和接收到的消息的来源的对象。
消息系统的管理员将管理对象配置到指定的JNDI命名空间上。JMS客户端通过标准JNDI接口就可以访问这些管理对象。
二、JMS消息模型
1、Pub/Sub模型:
一对多广播消息模式。在Pub/Sub模型中,消息发送方称为Publisher,消息接收方称为Subscriber。主题Topic充当Publisher和Subscriber之间的中介,对某个Topic感兴趣的Subscriber在Topic上注册,Publisher将消息发送到指定的Topic,Topic上的消息将递送给所有注册的Subscriber。
Pub/Sub模型的主要特点:
对Topic上的一个消息,注册的每个Subscriber均得到该消息的一个拷贝。
Topic上的消息是自动递送给Subscriber的,不需要Subscriber去主动获取新消息,这种方式也称为推模式(Push Model)。
Publisher和Subscriber可以在运行时刻动态添加和删除。
2、P2P模型:
一对一消息模式。在P2P模型中,消息发送方称为Sender,消息接收方称为Receiver。队列Queue充当Sender和Receiver之间的中介,Sender将消息发送到指定的Queue,Receiver从指定的Queue上获取消息。
P2P模型的主要特点:
对Queue上的每个消息,即使有多个Receiver请求该消息,有且只有一个Receiver接收到该消息。即每个消息只能被一个Receiver消费,消费之后消息就从Queue上删除了。
Receiver需要到Queue上请求消息,而不是自动递给它的,这种方式也称为拉模式(Pull Model)。
Queue上的消息是有顺序的,消息按照它发送到Queue上的顺序被Receiver取走。
JMS提供了两组API来支持上面两组模型的应用。
相关文章推荐
- Java技术回顾之JNDI--命名和目录服务基本概念
- Java技术回顾之JNDI:命名和目录服务基本概念
- Java技术回顾之JDBC:JDBC的事务支持
- Java多线程与并发库高级应用-传统定时器技术回顾
- ImportNew 首页所有文章资讯Web架构基础技术书籍教程我要投稿更多频道 » 如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例
- Java开发技术十年的回顾与展望
- 范例解说Java里的线程概念与线程同步技术
- 01_张孝祥_Java多线程_传统线程技术回顾
- JMS的基本概念(基于Java)
- JMS基本概念与模型
- ActiveMQ(02):JMS基本概念和模型
- Java 内存模型基本概念
- Java回顾之一些基础概念
- Java技术对存储模型的要求
- ActiveMQ(二):JMS的基本概念和模型
- Java JMS消息队列技术
- 【Java安全技术探索之路系列:Java可扩展安全架构】之十九:JGSS(三):JGSS编程模型.md
- Java开发技术十年的回顾与展望
- JMS(Java Message Service)概念归纳
- MQ学习(二)AMQP模型、重要概念和Java操作RabbitMQ实际使用