`

利用Spring中的JmsTemplate来进行ActiveMQ的整合

阅读更多

JmsTemplate就是Spring用来解决JMS冗长重复代码的方案,它可以创建连接,获取会话,发送和接收消息,使用它之后,使得你可以专注于构建要发送的消息及处理收到的消息。

 

<bean id="connectionFactory" class="org.apache.activemq.spring.ActiveMQConnectionFactory">        <property name="brokerURL">
      	  <value>failover://(tcp://192.168.1.147:61616?tcpNoDelay=true,tcp://192.168.1.157:61616?tcpNoDelay=true)</value>
       </property>
       <property name="useAsyncSend" value="true"></property>
</bean>

  <!-- 配置connectionFactory -->
<bean id="jmsFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
	<property name="targetConnectionFactory" ref="connectionFactory"></property>
	<property name="sessionCacheSize" value="100" />
</bean>
  
 <!-- 发送消息的目的地(一个队列) -->  
    <bean id="destination" class="org.apache.activemq.command.ActiveMQQueue">  
        <!-- Set the Queue Name -->  
        <constructor-arg index="0" value="goodsQueue?consumer.prefetchSize=100"/>
    </bean>  
    
    <bean id="destination_insert" class="org.apache.activemq.command.ActiveMQQueue">  
        <!-- Set the Queue Name -->  
        <constructor-arg index="0" value="insertQueue?consumer.prefetchSize=10"/>
    </bean>  
    
     <bean id="destination_img" class="org.apache.activemq.command.ActiveMQQueue">  
        <!-- Set the Queue Name -->  
        <constructor-arg index="0" value="imgQueue?consumer.prefetchSize=1"/>
    </bean>  
    
    <!-- 配置JMS模版 -->  
    <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">  
        <property name="connectionFactory"  ref="jmsFactory"/>  
        <property name="deliveryPersistent" value="true" />  
    </bean> 
    
    <bean id="myMessageProducer" class="com.naomi.spider.common.MyMessageProducer" >
      	<property name="jmsTemplate" ref="jmsTemplate" />
      	<property name="destination" ref="destination" />
    </bean>

   
    <!-- 异步接受 -->
    <bean id="jmsContainer"
        class="org.springframework.jms.listener.DefaultMessageListenerContainer">
        <property name="connectionFactory" ref="jmsFactory" />
        <property name="destination" ref="destination" />
        <property name="messageListener" ref="myMessageConsumer" />
        <property name="sessionTransacted" value="false"/>
  	<property name="concurrentConsumers" value="20"/>
  	<property name="maxConcurrentConsumers" value="100"/>
	<property name="receiveTimeout" value="5000"/>
	<property name="idleTaskExecutionLimit" value="10"/>
	<property name="idleConsumerLimit" value="5"/>
</bean>
    

   发送消息

 

   

template.send((javax.jms.Destination) destination, new MessageCreator(){  
                public Message createMessage(Session session) throws JMSException {  
                    return session.createTextMessage("hello");  
                }  

接受消息

 

jmsTemplate接收消息十分的简单,只需要调用template.receive()方法,receive方法是同步的,默认情况下,对receive()方法的调用会造成阻塞,知道消息到达目标----如果必要,永远等下去。为了避免对消息内容等待,可以配置jmsTemplate时,通过设置receiveTimeout属性来指定接收消息超时间。template.receive()会从默认目标接收消息,如果你希望指定一个目标,可以传一个目标。如:template.receive("myQueue").

同步接收消息并不是spring唯一的选择,消息监听器可以实现异步。activemq提供了messageListener接口,来为我们实现异步的接收消息。这样我们就不需要再手动的调用receive方法获取信息,当有消息发送到队列中时,就会自动的接受消息。我采用的是多线程异步的方式,效率要比同步的好一些。

 

 

自动将消息转化为Java对象

Spring通过MessageConverter接口提供了对消息转换的支持。此时,发送和接收消息要换成template.convertAndSend(message);template.receiveAndConvert();

可是jmsTemplate如何知道消息转换器呢?需要在配置jmsTemplate的时候,加上messageConverter属性。

<property name="messageConverter" ref="messageObj"></property> 

 

分享到:
评论

相关推荐

    Spring和ActiveMQ整合的完整实例

    将Spring与ActiveMQ整合,可以轻松地在Spring应用中实现消息队列的功能,提高系统的可扩展性和可靠性。 首先,让我们了解Spring框架如何支持消息传递。Spring提供了JmsTemplate类,这是一个模板类,用于简化发送和...

    activeMq整合spring所需jar包

    在Spring和ActiveMQ整合中,日志记录是必不可少的。 7. **activemq-all-5.15.0.jar**: 这是ActiveMQ的全功能JAR包,包含了所有需要的组件和服务,用于在Spring中直接使用ActiveMQ。 整合Spring和ActiveMQ的步骤...

    ActiveMQ整合spring的Demo

    ActiveMQ整合Spring的Demo是一个典型的Java企业级应用示例,它展示了如何在Spring框架中集成Apache ActiveMQ,以便实现消息队列的功能。ActiveMQ是Apache软件基金会的一个开源项目,它是一个功能丰富的Java消息服务...

    activemq整合spring

    标题中的“activemq整合spring”指的是在Java环境中,如何将Apache ActiveMQ,一个流行的开源消息代理和消息中间件,与Spring框架集成,以便利用Spring的便利性来管理ActiveMQ的配置和操作。ActiveMQ提供了发布/订阅...

    spring 与ACTIVEMQ整合

    一、Spring与ActiveMQ整合基础 1. **消息中间件概念**:消息中间件是一种软件,它在不同的应用之间传递消息,实现了应用之间的解耦。ActiveMQ作为JMS(Java Message Service)的实现,支持多种协议,如TCP/IP、HTTP...

    activemq与spring的整合案例

    将ActiveMQ与Spring进行整合,可以方便地在Spring应用中使用消息队列功能。 本案例主要展示了如何在Spring应用中集成ActiveMQ,实现消息的发送和接收。首先,我们需要在项目中引入ActiveMQ的相关依赖。在Maven工程...

    spring整合Activemq源码

    总结,`spring整合Activemq源码`项目展示了如何在Spring和SpringMVC环境中利用ActiveMQ实现消息的发布与订阅。通过理解这些知识点,开发者能够更好地理解和实践消息队列在实际项目中的应用,提升系统的稳定性和扩展...

    ActiveMQ-P2P文本消息+Spring和ActiveMQ的整合实例源码

    Spring 框架提供了与 ActiveMQ 集成的能力,使得开发者可以轻松地在 Spring 应用中使用 ActiveMQ。整合主要通过以下组件实现: 1. **Spring JMS**: Spring 提供了 JmsTemplate 类,它是发送和接收 JMS 消息的主要...

    Spring+ActiveMQ整合实例代码工程

    本实例代码工程"Spring+ActiveMQ整合实例代码工程"正是结合两者,展示了如何在Spring环境中配置并使用ActiveMQ进行消息传递。 首先,我们需要了解Spring与ActiveMQ整合的基本概念。Spring框架提供了对多种消息...

    Spring Boot整合ActiveMQ

    在 Spring Boot 中整合 ActiveMQ,可以使用 Spring 的 JmsTemplate 或者 @JmsListener 注解来发送和接收消息,实现应用间的异步通信和解耦。 整合以上技术的过程通常包括以下步骤: - 添加对应库的依赖,如 spring...

    Spring和ActiveMQ的整合实例源码

    在IT行业中,Spring框架是Java...通过上述知识点,我们可以理解如何在Spring环境中利用ActiveMQ进行消息传递,实现高并发、解耦的系统架构。这个实例源码将帮助开发者深入理解这两个组件的整合,并为实际项目提供参考。

    spring整合JMS-居于ActiveMQ实现

    整合Spring与ActiveMQ,首先需要在Spring配置文件中定义一个JMS模板,这是一个便捷的工具类,可以用来发送和接收消息。例如: ```xml &lt;bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"&gt; ...

    activeMQ+spring整合

    将ActiveMQ与Spring整合,可以充分利用Spring的便捷性来管理和使用消息队列,使得消息的发送和接收更加简单。 首先,要进行ActiveMQ与Spring的整合,你需要在项目中引入相应的依赖。通常,这可以通过在Maven或...

    activemq整合spring完整实例代码(内含所有相关jar包)

    这个实例代码是将ActiveMQ与Spring进行整合的一个实际项目,可以在Tomcat服务器上运行。由于提供了所有必要的jar包,所以无需额外下载,直接解压后部署到Tomcat即可。这表明该实例考虑到了用户友好性和易用性,避免...

    spring boot activemq整合例子

    将Spring Boot与ActiveMQ整合,可以充分利用Spring的自动化配置和ActiveMQ的消息传递能力,构建高效、可扩展的微服务架构。 本文将深入探讨如何在Spring Boot项目中集成ActiveMQ,包括以下几个关键知识点: 1. **...

    Spring+ActiveMQ的整合

    首先,让我们深入理解Spring与ActiveMQ整合的核心概念: 1. **Spring框架**:Spring是一个全功能的Java开发框架,它简化了应用开发,通过提供容器来管理对象的生命周期和依赖关系。Spring框架提供了AOP(面向切面...

    ActiveMQ整合Spring(多消费者)

    在Spring中,可以通过配置`JmsTemplate`或监听器容器来控制消息确认策略,确保消息正确处理后才被确认。 8. **异常处理**: 当消费者处理消息时发生异常,ActiveMQ可以重试消息或者将消息放入死信队列。Spring提供...

    ActiveMQ与spring整合封装

    本篇将详细讲解如何将ActiveMQ与Spring进行整合封装,实现高效、便捷的消息服务。 首先,ActiveMQ与Spring的整合主要基于Spring的JMS(Java Message Service)支持。Spring通过`ConnectionFactory`和`Destination`...

    spring-activemq整合工程,java单独操作activemq

    总结来说,Spring与ActiveMQ的整合涉及Spring框架的配置、ActiveMQ客户端的使用、以及通过`JmsTemplate`和`@JmsListener`进行消息的生产和消费。这种整合使得Java应用程序能够方便地利用消息队列进行异步通信,提高...

    activemq与spring整合发送jms消息入门实例

    在Java世界中,ActiveMQ和Spring的整合是企业级应用中常见的消息中间件解决方案,用于实现JMS(Java Message Service)消息传递。本教程将深入探讨如何将这两个强大的工具结合在一起,以创建一个简单的发送JMS消息的...

Global site tag (gtag.js) - Google Analytics