`
ufopw
  • 浏览: 163294 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

Spring3 JmsTemplate与MQ的集成

 
阅读更多
基于IBM的产品一向对开发者不太友好,特此记录一下Spring JmsTemplate连接MQ的开发过程。
一、连接方式
MQ与大多数消息中间件一样,是标准的消息中间件服务器,提供异构平台之间的消息传递;
客户端连接MQ有两种方式,一是stand-alone,二是基于JNDI连接,两种方式的优缺点再次不在赘述,本文是以stand-alone方式连接,下面直奔主题。
二、Spring Jms配置
<!--WizRtf2Html Charset=0 --><?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
        http://www.springframework.org/schema/tx 
        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"
    default-lazy-init="false"
>
 
    <!-- WebSphere MQ Connection Factory -->
    <bean id="mqConnectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory">
        <property name="hostName">
            <value>${app.mq.hostName}</value>
        </property>
        <property name="port">
            <value>${app.mq.port}</value>
        </property>
        <property name="queueManager">
            <value>${app.mq.queueManager}</value>
        </property>
        <property name="channel">
            <value>${app.mq.channel}</value>
        </property>
        <property name="transportType" value="1" />
    </bean>
 
 
    <!-- JMS Queue Connection Factory -->
    <bean id="jmsQueueConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
        <property name="targetConnectionFactory" ref="mqConnectionFactory" />
        <property name="sessionCacheSize">
            <value>${app.jms.connectionFactory.sessionCacheSize}</value>
        </property>
    </bean>
 
    <!-- JMS Destination Resolver -->
    <bean id="jmsDestinationResolver" class="org.springframework.jms.support.destination.DynamicDestinationResolver" />
 
    <!-- JMS Queue Template -->
    <bean id="jmsTemplateSend" class="org.springframework.jms.core.JmsTemplate">
        <property name="connectionFactory" ref="jmsQueueConnectionFactory" />
        <property name="destinationResolver" ref="jmsDestinationResolver" />
        <property name="pubSubDomain" value="false" />
    </bean>
 
    <!-- 定义接收者 -->
    <bean id="jmsListener" class="cn.com.yitong.mps.push.jms.JmsListener"></bean>
    <!-- 接受监听 -->
    <bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
        <property name="connectionFactory" ref="jmsQueueConnectionFactory" />
        <property name="destinationResolver" ref="jmsDestinationResolver" />
        <property name="messageListener" ref="jmsListener" />
        <property name="cacheLevelName" value="CACHE_CONSUMER" />
        <property name="taskExecutor" ref="jmsListenerTaskExecutor" />
        <property name="concurrentConsumers">
            <value>${app.jms.listenerContainer.concurrentConsumers}</value>
        </property>
        <property name="maxConcurrentConsumers">
            <value>${app.jms.listenerContainer.maxConcurrentConsumers}</value>
        </property>
        <property name="destinationName">
            <value>${app.jms.listenerContainer.destinationName}</value>
        </property>
    </bean>    
<!--WizRtf2Html Charset=0 -->    <!-- jms监听线程池 -->
    <bean id="jmsListenerTaskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
        <property name="corePoolSize">
            <value>${app.jmsListenerExecutor.corePoolSize}</value>
        </property>
        <property name="maxPoolSize">
            <value>${app.jmsListenerExecutor.maxPoolSize}</value>
        </property>
        <property name="keepAliveSeconds">
            <value>${app.jmsListenerExecutor.keepAliveSeconds}</value>
        </property>
        <property name="queueCapacity">
            <value>${app.jmsListenerExecutor.queueCapacity}</value>
        </property>
        <property name="threadNamePrefix" value="jmsListenerTaskExecutor" />
    </bean>
 
</beans>
 
三、客户端jar包(以下jar包maven中央库中没有,需要自己从IBM MQ安装目录中拷贝)

 

com.ibm.mq.commonservices.jar
com.ibm.mq.defaultconfig.jar
com.ibm.mq.headers.jar
com.ibm.mq.jar
com.ibm.mq.jmqi.jar
com.ibm.mq.jms.Nojndi.jar
com.ibm.mq.pcf.jar
com.ibm.mq.postcard.jar
com.ibm.mq.tools.ras.jar
com.ibm.mqjms.jar
connector.jar
dhbcore.jar
fscontext.jar
jms.jar
jndi.jar
jta.jar
ldap.jar
mqcontext.jar
providerutil.jar
rmm.jar
 
四、MQ配置
1、建立队列管理器
2、建立通道(需要注意MCA,配制成当前服务器的用户,否则客户端连接会有权限问题)
 
五、备注
配置中使用了CachingConnectionFactory,为发送提供缓存,可以提高效率;
监听时配置了线程池,Spring默认使用<!--WizRtf2Html Charset=0 -->SimpleAsyncTaskExecutor,每次都会创建新的线程,开销较大,故配置了固定的线程池提高效率
3
2
分享到:
评论
3 楼 panamera 2016-08-07  
MQ服务器没有启动,消息生产者一直等待,不会报连接异常,这个问题怎么解决
2 楼 yakecjh 2014-11-05  
哥们能份这个示例的代码给我么,我是北京科瑞明的,我现在正要做MQ的项目,谢谢了我的邮件是  sh2010_1@126.com,
1 楼 ma860709 2013-12-20  
除了配置~能列一下配置的属性的意思还有代码的实现吗?

相关推荐

    在spring boot中使用jms集成IBM-MQ和TLQ,包含普通队列和主题订阅两种模式,并实现按需加载

    1) 本工程主要演示在SPRING BOOT工程中怎样使用JMS集成IBM-MQ及TLQ两种消息中间件产品 2) 使用SPRING BOOT Conditional机制实现了两种产品按需加载,工程会根据配置文件开关动态加载 3) 实现了普通队列消息发送与...

    activityMQ调用示例,spring集成示例

    当我们谈到“activityMQ调用示例,spring集成示例”,这意味着我们将探讨如何将ActivityMQ与Spring框架整合,以实现高效、可扩展的系统架构。 首先,我们需要理解ActivityMQ的核心概念。ActivityMQ是一个基于Apache...

    Maven Spring MQ集成

    【 Maven Spring MQ 集成详解 】 在Java开发中,消息队列(Message Queue,简称MQ)是一种常用于解耦系统组件、提高系统可扩展性的技术。本篇将深入探讨如何利用Maven构建项目,并结合Spring框架集成ActiveMQ,以...

    spring boot jsm ibmmq topic queue

    3. **集成IBM MQ**: - 首先,需要在Spring Boot的`pom.xml`文件中添加IBM MQ的JMS依赖,如`com.ibm.mq.allclient`。 - 然后,配置IBM MQ连接的相关属性,如`spring.jms_ibmmq.connectionFactory.jndi-name`、`...

    spring下实现MQ

    在Spring框架下实现消息队列(MQ)服务,可以极大地简化JMS(Java Message Service)的集成和管理,提供更高效、可维护的解决方案。本文将深入探讨如何使用Spring结合MQ6.0来实现JMS异步通信,并比较Spring与传统JMS...

    spring-mq完美整合示例

    本示例聚焦于Spring框架与Apache ActiveMQ的整合,旨在帮助开发者更好地理解和实现Spring与MQ的无缝集成,从而提升系统的稳定性和效率。 首先,我们需要理解Spring框架。Spring是Java领域最流行的轻量级开源框架之...

    消息队列springmq

    在“springmq”这个项目中,我们可以看到一个完整的Spring MVC与ActiveMQ的整合示例。项目包含了Spring MVC的配置、ActiveMQ的配置、消息监听器的实现,以及发送和接收消息的控制器。通过这个项目,开发者可以学习...

    spring+MQ消息队列

    Spring框架是Java开发中的一个核心工具,它提供了丰富的功能来简化企业级应用的开发,包括与各种MQ的集成。在这个“spring+activeMQ消息队列”的主题中,我们将深入探讨Spring如何与ActiveMQ结合使用,以及相关的...

    Spring链接IBM MQ Demo

    在本文中,我们将深入探讨如何使用Spring框架与IBM MQ进行集成,实现消息队列的通信。这个Demo项目展示了如何在Spring应用中配置和使用IBM MQ 7.5版本,确保了其兼容性和有效性。 首先,我们需要理解Spring框架的...

    spring mq集成 web工程发送和接收消息例子

    在本文中,我们将深入探讨如何将Spring框架与Apache ActiveMQ集成,以便在Web工程中实现消息的发送和接收。这是一个经过实践验证的例子,代码结构清晰,适用于初学者和经验丰富的开发者。首先,我们需要理解Spring ...

    spring mq 集成

    标题中的“Spring MQ集成”指的是在Spring框架中整合消息队列(Message Queue)技术,通常是指使用Spring的Integration模块或Spring Boot的Starter for Apache ActiveMQ来实现消息传递功能。ActiveMQ是Apache软件...

    Spring boot 和内置ActiveMQ集成例子.zip

    将Spring Boot与ActiveMQ集成可以提供强大的消息处理能力,使应用能够解耦组件,提高可扩展性和容错性。 本文将详细讲解如何使用Spring Boot与内置的ActiveMQ进行集成,以及如何通过代码实现这一过程。 首先,我们...

    spring集成activemq例子demo

    以下将详细介绍如何进行Spring与ActiveMQ的集成,并提供一些关键知识点。 1. **安装配置ActiveMQ** - 首先,需要下载并安装ActiveMQ服务器。可以从官方网站(https://activemq.apache.org/)获取最新版本。 - 启动...

    mq+cxf相关资源jar包

    本资源集合主要包含与IBM MQ和CXF集成相关的Java类库,尤其是与Spring框架配合使用的部分。 首先,我们来详细了解一下IBM MQ。IBM MQ是IBM提供的企业级消息中间件,它允许应用程序通过消息队列进行通信,而无需直接...

    SH+MQ+JPA集成

    本项目涉及的是"SH+MQ+JPA集成",即Spring、ActiveMQ和JPA的整合,结合了Web应用开发、消息队列以及持久化管理的重要技术。下面将详细解释这些技术及其集成的关键点。 **Spring框架**: Spring是Java平台上的一个...

    Spring集成ActiveMQ配置

    Spring集成ActiveMQ是将Spring框架与ActiveMQ消息中间件相结合,实现异步处理和解耦应用程序的关键技术。在本文中,我们将深入探讨如何配置和使用这一组合,以及它在实际项目中的应用。 首先,让我们了解Spring框架...

    Spring+JMS+消息处理

    #### 四、Spring JMS与IBM WebSphere MQ集成 IBM WebSphere MQ是一个广泛使用的消息中间件产品,Spring JMS可以很容易地与之集成,为开发者提供一个健壮且灵活的消息传递平台。 - **安装与配置**:首先需要确保IBM ...

    ibm mq开发教程.pdf

    以上步骤和代码片段展示了如何通过IBM MQ实现应用程序之间的消息交换,以及如何通过Spring框架和MQ API简化MQ的集成开发。开发者需要对MQ的API和Spring框架有深入的了解,以便正确配置和使用这些工具来构建稳定可靠...

    springboot与activemq结合以及mq延迟demo

    综上所述,通过Spring Boot和ActiveMQ的集成,我们可以实现MQ延迟功能。在实际应用中,可以根据业务需求调整延迟时间和消息处理逻辑,从而实现更灵活的消息处理机制。此外,还可以利用ActiveMQ的其他特性,如主题...

    ActiveMQ与Spring联合使用Demo

    3. **创建消息生产者**:使用`JmsTemplate`,我们可以方便地发送消息到队列或主题。例如: ```java @Autowired private JmsTemplate jmsTemplate; public void sendMessage(String message) { jmsTemplate....

Global site tag (gtag.js) - Google Analytics