• 20220507 4. Integration JMS (Java Message Service)


    前言

    文档地址

    相关依赖:

    <dependency>
        <groupId>org.springframework.integration</groupId>
        <artifactId>spring-integration-jms</artifactId>
    </dependency>
    
    
    <dependency>
        <groupId>org.springframework.integration</groupId>
        <artifactId>spring-integration-bom</artifactId>
        <version>${spring-integration.version}</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
    

    Spring 提供了一个 JMS 集成框架,它简化了对 JMS API 的使用,就像 Spring 对 JDBC API 的集成一样。

    JMS 可以大致分为两个功能区域,即消息的生产和消费。JmsTemplate 类用于消息生成和同步消息接收。对于类似于 Java EE 的消息驱动 bean 风格的异步接收,Spring 提供了许多消息监听器容器,您可以使用它们来创建消息驱动的 POJOs (MDPs) 。Spring 还提供了创建消息监听器的声明性方法。

    org.springframework.jms.core 包提供了使用 JMS 的核心功能。它包含 JMS 模板类,这些类通过处理资源的创建和释放来简化 JMS 的使用,就像 JdbcTemplate 对 JDBC 所做的那样。Spring 模板类通用的设计原则是提供帮助方法来执行通用操作,并且,对于更复杂的用法,将处理任务的本质委托给用户实现的回调接口。JMS 模板遵循相同的设计。这些类提供了各种方便的方法,用于发送消息、同步消费消息以及向用户公开 JMS 会话和消息生成器。

    org.springframework.jms.support 包提供了 JMSException 异常翻译功能。翻译将检查异常 JMSException 层次结构转换为非检查异常的镜像层次结构。如果检查异常 javax.jms.JMSException 的任何特定于供应商的子类存在,则此异常将包装在非检查异常 UncategorizedJmsException 中。

    org.springframework.jms.support.converter 包提供了一个 MessageConverter 抽象,用于在 Java 对象和 JMS 消息之间进行转换。

    org.springframework.jms.support.destination 包为管理 JMS 目的地提供了各种策略,比如为存储在 JNDI 中的目的地提供服务定位器。

    org.springframework.jms.annotation 包提供了必要的基础设施,通过使用 @JmsListener 来支持注解驱动的监听器端点。

    org.springframework.jms.config 包提供了 jms 名称空间的解析器实现,以及 Java 配置支持,用于配置监听器容器和创建监听器端点。

    最后,org.springframework.jms.connection 包提供了一个 ConnectionFactory 的实现,适合在独立应用程序中使用。它还包含 Spring 针对 JMS 的 PlatformTransactionManager (巧妙地命名为 JmsTransactionManager ) 的实现。这允许将 JMS 作为事务资源无缝集成到 Spring 的事务管理机制中。

    在 Spring Framework 5 中,Spring 的 JMS 包完全支持 JMS 2.0 ,并且要求 JMS 2.0 API 在运行时出现。我们建议使用兼容 JMS 2.0的供应商。

    如果您碰巧在系统中使用了较老的消息代理,那么您可以尝试为现有的代理生成器升级到兼容 JMS 2.0 的驱动程序。或者,您也可以尝试针对基于 JMS 1.1 的驱动程序运行,只需将 JMS 2.0 API jar 放在类路径上,但只对您的驱动程序使用 JMS 1.1 兼容的 API。Spring 的 JMS 支持默认遵循 JMS 1.1 约定,因此对于相应的配置,它确实支持这样的场景。不过,请只考虑过渡情况。

    其他略

  • 相关阅读:
    python pycurl属性
    HTTP报文-->MVC
    国际化信息-->MVC
    计算机网络入门概念理解
    TCP/IP基础概念及通信过程举例
    一道面试题:说说进程和线程的区别
    【转载】我眼中的Oracle性能优化
    【转载】数据库范式那些事
    【转载】详解CreateProcess调用内核创建进程的过程
    数据结构和算法(一):hash散列容器
  • 原文地址:https://www.cnblogs.com/huangwenjie/p/16361257.html
Copyright © 2020-2023  润新知