JMS 介绍

一、JMS

1、简介

      JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM-分布式系统的集成)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。

      JMS是一种与厂商无关的 API,用来访问消息收发系统消息,它类似于JDBC(Java Database Connectivity)。这里,JDBC 是可以用来访问许多不同关系数据库的 API

2、使用场景
        1)跨平台 
        2)多语言 
        3)多项目
        4)解耦
        5)分布式事务

        6)流量控制
        7)最终一致性
        8)RPC调用
            上下游对接,数据源变动->通知下属

3、概念    
        JMS提供者:连接面向消息中间件的,JMS接口的一个实现( Apache ActiveMQ、RabbitMQ、Kafka、Notify、MetaQ、                                      RocketMQ)
        JMS生产者(Message Producer)
        JMS消费者(Message Consumer)
        JMS消息:包括可以在JMS客户之间传递的数据的对象。
        JMS队列:个容纳那些被发送的等待阅读的消息的区域。与队列名字所暗示的意思不同,消息的接受顺序并不一定要与消                        息 的发送顺序相同。一旦一个消息被阅读,该消息将被从队列中移走。
        JMS主题:一种支持发送消息给多个订阅者的机制。

4、JMS对象模型

MQ中需要用的一些类
        ConnectionFactory :连接工厂,JMS 用它创建连接
        Connection :JMS 客户端到JMS Provider 的连接
        Session: 一个发送或接收消息的线程
        Destination :消息的目的地;消息发送给谁.
        MessageConsumer / MessageProducer: 消息接收者,消费者

5、JMS消息模型

    有两种消息模型  点对点 P2P(Point to Point);  发布/订阅Publish/Subscribe(Pub/Sub)。

 5.1  P2P模式-点对点消息传送模型

在点对点消息传送模型中,应用程序由消息队列,发送者,接收者组成。每一个消息发送给一个特殊的消息队列,该队列保存了所有发送给它的消息(除了被接收者消费掉的和过期的消息)。

P2P的特点

1,每个消息只有一个消费者(Consumer)(即一旦被消费,消息就不再在消息队列中)。

2,发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行,它不会影响到消息被发送到队列。

3,接收者在成功接收消息之后需向队列发送确认收到通知(acknowledgement)。

 

5.2  Pub/Sub-发布/订阅消息传递模型

在发布/订阅消息模型中,发布者发布一个消息,该消息通过topic传递给所有的客户端。在这种模型中,发布者和订阅者彼此不知道对方,是匿名的且可以动态发布和订阅topic。

在发布/订阅消息模型中,目的地被称为主题(topic),topic主要用于保存和传递消息,且会一直保存消息直到消息被传递给客户端。

Pub/Sub特点

1,每个消息可以有多个消费者。

2,发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个或多个订阅者之后,才能消费发布者的消息,而且为了消费消息,订阅者必须保持运行的状态。

3,为了缓和这样严格的时间相关性,JMS允许订阅者创建一个可持久化的订阅。这样,即使订阅者没有被激活(运行),它也能接收到发布者的消息。

6、在JMS中,消息的接收可以使用以下两种方式:

同步

使用同步方式接收消息的话,消息订阅者调用receive()方法。在receive()中,消息未到达或在到达指定时间之前,方法会阻塞,直到消息可用。

异步

使用异步方式接收消息的话,消息订阅者需注册一个消息监听者,类似于事件监听器,只要消息到达,JMS服务提供者会通过调用监听器的onMessage()递送消息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值