浅谈JMS(Java消息服务)

浅谈JMS(Java消息服务)

JMS,Java Message Service,即Java消息服务应用程序接口,是Java平台一个关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。
Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商对JMS提供支持。JMS是一种与厂商无关的API,用来访问收发系统消息,它类似于JDBC(Java Database Connectivity)。JDBC是可以用来访问许多种不同的关系数据库的API,而JMS则提供同样与厂商无关的访问方法,以访问消息收发服务。
JMS使你能够通过消息收发服务从一个JMS客户机向另一个JMS客户机发送消息。
消息是JMS中的一种类型对象,又两部分组成:报头和消息主体。报头由路由信息以及有关该消息的元数据组成。消息主体则携带应用程序的数据或有效负载。根据有效负载的类型来划分,可以将消息分为几种类型,它们分别携带:简单文本(TextMessage)可序列化的对象(ObjectMessage)属性集合(MapMessage)字节流(ByteMessage)原始值流(StreamMessage),还有无有效负载的消息(Message)

JMS由以下元素组成:

  • JMS提供者:连接面向消息中间件的,JMS接口的一个实现。提供者可以是Java平台的JMS实现,也可以是非Java平台的面向消息中间件的适配器。

开源的提供者包括:
Apache ActiveMQ
JBoss 社区所研发的 HornetQ
Joram
Coridan的MantaRay
The OpenJMS Group的OpenJMS
专有的提供者包括:
BEA的BEA WebLogic Server JMS
TIBCO Software的EMS
GigaSpaces Technologies的GigaSpaces
Softwired 2006的iBus
IONA Technologies的IONA JMS
SeeBeyond的IQManager(2005年8月被Sun Microsystems并购)
webMethods的JMS+ -
my-channels的Nirvana
Sonic Software的SonicMQ
SwiftMQ的SwiftMQ
IBM的WebSphere MQ

  • JMS客户:生产或消费基于消息的Java应用程序对象。
  • JMS生产者:创建并发送消息的JMS客户。
  • JMS消费者:接受消息的JMS客户。
  • JMS消息:包括可以在JMS客户之间传递的数据对象。
  • JMS队列:一个容纳那些被发送的等待阅读的消息的区域。(与队列的FIFO不同,消息的接收顺序并不一定要与消息的发送顺序相同)。一个消息被阅读之后该消息将被从队列中移走。
  • JMS主题:一种支持发送消息给多个订阅者的机制。

JMS对象模型包含下面的几个要素:

  • 连接工厂(ConnectionFactory),由管理员创建,并绑定到JNDI树中,客户端使用JNDI查找连接工厂,然后利用连接工厂创建一个JMS连接。

  • JMS连接(Connection),表示JMS客户端和服务器端之间的一个活动的连接,是由客户端通过调用连接工厂的方法建立的。

  • JMS会话(Session),表示JMS客户与服务器之间的会话状态。JMS会话建立在JMS连接之上,表示客户与服务器之间的一个会话进程。

  • JMS目的(Destination),又称消息队列,是实际的消息源。

  • JMS 生产者(Message Producer)消费者(Message Consumer),由Session对象创建,用于发送和接受消息。

  • JMS消息,通常有两种类型:
    ①点对点(Point-to-Point),消息系统,消息分发给一个单独的使用者。点对点消息往往跟JMS队列(javax.jms.Queue)相关联。
    ②发布/订阅(Publish/Subscribe)消息系统,支持一个事件驱动模型,消息生产者和消费者都参与消息的传递。生产者发布事件,而使用者订阅感兴趣的事件,并使用事件。该类型的消息一般与特定的主题(javax.jms.Topic)关联。
    在这里插入图片描述
    JMS的传递方式有以下两种:

  • 标记为NON_PERSISTENT的非持久性消息最多投递一次。

  • 标记为PRESISTENT的持久性消息将使用暂存后再转发的机理投递。
    如果一个JMS服务离线,持久性消息不会丢失,但是等到这个服务恢复联机是才会被传递;采用非持久性消息可能降低内务和需要的存储器,所以默认的消息传递方式是非持久性的,但是这种传递方式只有当你不需要接收所有的消息是才使用。

由百度百科摘录修改:https://baike.baidu.com/item/JMS/2836691?fr=aladdin
安利一个不错的博客:https://www.cnblogs.com/jaycekon/p/6220200.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java消息服务Java Message Service,简称JMS)是一个Java消息中间件的应用程序接口(API)标准,用于处理面向消息的通信。它提供了一个可靠的消息传递模型,用于在分布式系统中发送、传递和接收消息JMS提供的主要功能包括生产和消费消息。生产者创建并发送消息消息队列(Queue)或主题(Topic),而消费者从中接收和处理这些消息JMS支持点对点模型和发布-订阅模型。 在点对点模型中,消息被发送给某一个特定的消费者,而在发布-订阅模型中,消息被广播给多个订阅者。这种灵活性使得JMS非常适合于应用场景,例如异步通信、事件驱动架构、系统集成等。 JMS采用了异步的消息传递方式,这意味着发送方和接收方不需要同时在线。消息可以在发送后被存储在消息队列中,直到接收方准备好处理它们。这种异步通信方式有助于提高系统的可靠性、可扩展性和灵活性。 除了基本的消息传递功能,JMS还提供了一些高级特性,如持久化消息、事务性消息消息过滤等。持久化消息可以确保即使在发送方或接收方断电或崩溃时,消息也不会丢失。事务性消息允许多个消息操作作为一个原子操作进行提交或回滚。消息过滤允许消费者只接收满足特定条件的消息。 总之,Java消息服务是一种功能强大的消息中间件,为分布式系统提供了可靠、灵活和高效的消息传递机制。它在现代的软件架构中扮演着重要角色,帮助开发人员构建可靠的、高性能的系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值