博客
关于我
深入浅出JMS(一)--JMS基本概念
阅读量:796 次
发布时间:2023-03-24

本文共 1702 字,大约阅读时间需要 5 分钟。

JMS(Java Message Service)消息服务概述

JMS(Java Message Service, java消息服务)是一个消息服务协议,旨在为基于Java Enterprise Edition平台的应用程序提供消息传输功能。通过JMS,应用程序可以实现消息的创建、发送、接收和读取,从而支持分布式通信。这种通信方式具有松耦合、可靠性和异步性的特点,广泛应用于企业级消息系统中。

JMS的基本概念

JMS定义了一种标准化的消息服务接口,允许不同系统之间在不紧密耦合的情况下进行通信。其核心功能是通过消息队列实现点对点(P2P)或发布/订阅(Pub/Sub)模式下的消息传递。以下是JMS的主要特点:

  • 异步性:消息的传输不依赖于发送者和接收者的实时连接,消息生产者和消费者可以按照各自的节奏进行操作。
  • 可靠性:消息会被持久化存储,直到被成功接收或超时删除,确保消息传输的可靠性。

JMS的消息模型

JMS支持两种主要的消息传输模式:点对点(P2P)和发布/订阅(Pub/Sub)。

1. 点对点(P2P)模式

在P2P模式中,消息通过消息队列(Queue)进行传递。每个消息会被发送到特定的队列,消费者从队列中获取消息。P2P模式的特点包括:

  • 一对一传输:每条消息只能被一个消费者接收。
  • 无依赖性:发送者可以立即发送消息,而接收者可以在任何时间接收。
  • ** acknowledgments**:接收者需要向消息队列确认消息已接收,确保消息可靠传输。
2. 发布/订阅(Pub/Sub)模式

Pub/Sub模式通过主题(Topic)实现消息传递,允许多个发布者发送消息给多个订阅者。其特点包括:

  • 多对多传输:每条消息可以被多个消费者接收。
  • 依赖性:订阅者需要保持活跃状态才能接收消息,除非使用持久化订阅。
  • 可持久化订阅:通过持久化订阅,订阅者可以在不活跃状态下接收消息。

消息的消费

在JMS中,消息消费可以通过两种方式实现:同步和异步。

  • 同步消费:消费者通过receive()方法获取消息,该方法会阻塞直到消息到达或超时。
  • 异步消费:消费者注册消息监听器(MessageListener),一旦消息到达将自动调用监听器的onMessage()方法。

JMS编程模型

JMS提供了一个复杂的编程模型,涵盖了从连接到消息处理的各个层次。以下是JMS的主要组件:

  • ConnectionFactory:用于获取连接(Connection)的工厂,根据消息模型(P2P或Pub/Sub)提供不同的ConnectionFactory(如QueueConnectionFactoryTopicConnectionFactory)。
  • Destination:消息的发送目标和接收来源,包括消息队列(Queue)和主题(Topic),可通过JNDI查找。
  • Connection:表示客户端与JMS系统之间的连接,包括两种类型:QueueConnectionTopicConnection
  • Session:操作消息的接口,支持事务管理,可创建消息生产者和消费者。
  • 消息生产者:通过Session创建,用于将消息发送到Destination,分为QueueSenderTopicPublisher两种类型。
  • 消息消费者:通过Session创建,用于接收消息,分为QueueReceiverTopicSubscriber两种类型。支持持久化订阅以允许多个消费者接收相同消息。
  • 消息监听器:用于异步消息处理,EJB中的Message-Driven Bean(MDB)是典型的MessageListener。
  • 企业消息系统的优势

    JMS在企业级消息系统中具有显著的优势:

    • 灵活性:支持多种消息模型和传输方式,满足不同场景的需求。
    • 松耦合:系统组件之间通过消息队列或主题进行通信,减少依赖关系。
    • 异步性:允许系统在不需要实时响应的情况下进行消息传输,提升系统性能和可用性。

    通过以上介绍,我们可以清晰地了解JMS的基本原理和应用场景。接下来,我们将深入探讨JMS的实现原理,以及如何在实际项目中应用JMS系统。

    转载地址:http://yeqfk.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现检查给定的字符串是否是扁平(全部小写)的算法(附完整源码)
    查看>>
    Objective-C实现检检查回文字符串(区分大小写)算法(附完整源码)
    查看>>
    Objective-C实现检测U盘的插入与拔出 (附完整源码)
    查看>>
    Objective-C实现检测列表中的循环算法(附完整源码)
    查看>>
    Objective-C实现检测耳机插拔功能(附完整源码)
    查看>>
    Objective-C实现模拟键盘鼠标(附完整源码)
    查看>>
    Objective-C实现模板方法模式(附完整源码)
    查看>>
    Objective-C实现欧几里得距离(附完整源码)
    查看>>
    Objective-C实现欧几里得距离(附完整源码)
    查看>>
    Objective-C实现欧拉路径和欧拉回路算法(附完整源码)
    查看>>
    Objective-C实现正向CMDShell(附完整源码)
    查看>>
    Objective-C实现正数num使用递归找到它的二进制算法(附完整源码)
    查看>>
    Objective-C实现水波纹显示效果(附完整源码)
    查看>>
    Objective-C实现求 1 到 20 的所有数整除的最小正数算法 (附完整源码)
    查看>>
    Objective-C实现求1000以内的全部亲密数(附完整源码)
    查看>>
    Objective-C实现求a的逆元x(附完整源码)
    查看>>
    Objective-C实现求squareDifference平方差算法 (附完整源码)
    查看>>
    Objective-C实现求一个数的位数之和算法(附完整源码)
    查看>>
    Objective-C实现求一个数的因子算法(附完整源码)
    查看>>
    Objective-C实现求一组数字的平均值算法(附完整源码)
    查看>>