[size=large]
需要配置的参数:[/size]
消息消费者的配置
一、connectionFactory:
<bean id="queueJmsConnectionFactory" class="org.apache.activemq.spring.ActiveMQConnectionFactory">
<property name="brokerURL"
value="tcp://10.100.1.117:61616?wireFormat.maxInactivityDuration=0" />
<property name="useAsyncSend" value="true" />
</bean>
以上配置指明MQ服务所在的服务器。
二、配置queue:
<amq:queue name="recommendq" physicalName="eps.recommendq" />
<amq:queue name="volumeq" physicalName="eps.volumeq" />
<amq:queue name="mailq" physicalName="eps.mailq" />
服务器上有几个Q,这里就配置几个,physicalName即是服务器上Q的名字
三、配置convert:
发送到mq的消息,要先经过convert类的toMessage方法,才能发送,消费者接收后要经过convert的fromMessage方法后才能给consumer使用,但这两步都是由activeMq jar包自己调用,我们要做的只是
重写toMessage和fromMessage两个方法就可
<bean id="recommendFlowQConvert"
class="com.lenovo.lps.epub.bes.mq.convert.RecommendFlowQConvert" />
上边的RecommendFlowQConvert类实现了MessageConverter接口,同时重写fromMessage和toMessage方法
代码:
public class RecommendFlowQConvert implements MessageConverter{
/**
*
* 所传输对象必须实现Serializable接口
*
* 示例
*/
@Override
public Object fromMessage(Message msg) throws JMSException,
MessageConversionException {
TextMessage textMessage;
if (msg instanceof TextMessage) {
textMessage = (TextMessage) msg;
System.out.println("RecommendFlowQConvert:" + textMessage.getText());
return textMessage.getText();
}
return null;
}
/**
* 示例
*/
@Override
public Message toMessage(Object obj, Session session) throws JMSException,
MessageConversionException {
TextMessage textMessage = session.createTextMessage((String) obj);
return textMessage;
}
}
四、配置consumer:
consumer是消息的真正接收者,这类比如下边的RecommendFlowQConsumer,不必实现任何接口或继承类,里边都是业务方法
<bean id="recommendFlowQConsumer" class="com.lenovo.lps.epub.bes.mq.RecommendFlowQConsumer"
scope="prototype" />
<bean id="subscribeFlowQConsumer" class="com.lenovo.lps.epub.bes.mq.SubscribeFlowQConsumer"
scope="prototype" />
<bean id="sendMailQConsumer" class="com.lenovo.lps.epub.bes.mq.SendMailQConsumer"
scope="prototype" />
五、配置convert和consumer的监听器(listener),每一对convert和consumer就对应一个监听器
listener的作用是监听服务器上queue,是否有了新值,如果有了,就按配置执行convert,consumer
<bean id="recommendFlowQListener"
class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
<constructor-arg ref="recommendFlowQConsumer" /><!--这里的ref="recommendFlowQConsumer" 就是指定上边的配置的consumer-->
<property name="defaultListenerMethod" value="receive" /><!--定义consumer里用来处理这个监听的方法-->
<property name="messageConverter" ref="recommendFlowQConvert" /><!--指定上边配置的convert-->
</bean>
六、配置listener的container:一个listener对应一个container
<bean id="recommendFlowQContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="queueJmsConnectionFactory" /><!--指定容器的连接工厂-->
<property name="destination" ref="recommendq" /><!---->
<property name="messageListener" ref="recommendFlowQListener" /><!--指定对应的监听器或者说容器中要放置的监听器-->
<property name="sessionAcknowledgeModeName" value="AUTO_ACKNOWLEDGE" /><!---->
<property name="receiveTimeout" value="20000" /><!--连接超时时限-->
</bean>
消息生产者的配置
一、配置连接工厂,同上
二、配置jmsTemplate作用就同jdbcTemplate:
<bean id="subscribeFlowQTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory">
<!-- lets wrap in a pool to avoid creating a connection per send -->
<bean class="org.springframework.jms.connection.SingleConnectionFactory">
<property name="targetConnectionFactory" ref="queueJmsConnectionFactory" /><!--指定连接池-->
</bean>
</property>
<!-- custom MessageConverter -->
<property name="messageConverter" ref="subscribeFlowQConvert" /><!-- 指定消息转换器 -->
<property name="receiveTimeout" value="20000" />
</bean>
三、指定消息生产者类
如下边的SubscribeFlowQProducer,该就是一个普通的相当于service层的一个类,不用继承或实现任何类或接口,但要有两个属性,分别用来指定jmsTemplate和q
<bean id="subscribeFlowQProducer" class="com.lenovo.lps.epub.bes.mq.SubscribeFlowQProducer">
<property name="template" ref="subscribeFlowQTemplate" />
<property name="destination" ref="volumeq" />
</bean>
分享到:
相关推荐
综上所述,"activeMQ+spring整合"是一个实用的示例,它演示了如何在Spring环境中配置和使用ActiveMQ,以实现消息的可靠传输。通过下载并研究`activemqDOME`这个压缩包中的代码,你可以更深入地理解这个整合过程,...
在ActiveMQ中,可以通过设置消费者的订阅类型(Durable Subscription或Shared Subscription)来实现消息的多消费者分发策略。 6. **事务管理**: Spring与ActiveMQ整合时,还可以支持JMS事务,确保消息的一致性。`...
首先,让我们了解如何在Spring配置中设置ActiveMQ。在Spring的XML配置文件中,我们需要引入ActiveMQ的相关库,并定义一个`JmsTemplate`实例,这是Spring用于发送和接收消息的主要工具。例如: ```xml ...
本篇文章将深入探讨ActiveMQ的常用封装以及如何将其与Spring框架结合使用,以便更好地理解和应用在实际项目中。 首先,ActiveMQ的封装主要是为了简化消息的发送和接收过程,提高开发效率。通常,我们会创建一个辅助...
本实例“Spring和ActiveMQ的整合实例源码”旨在展示如何将Spring框架与ActiveMQ结合使用,利用JMS进行高效的消息传递。这个实例适合那些希望学习或深入了解Spring框架如何与消息中间件集成的开发者。它基于Spring的...
2. **配置ActiveMQ**:创建一个ActiveMQ服务器,可以通过修改`activemq.xml`配置文件来设置服务器的各项参数,如端口、存储路径等。 3. **配置Spring**:在Spring的配置文件(如`applicationContext.xml`)中,定义...
- 事务支持:Spring与ActiveMQ结合,可以使用JMS事务或XATransaction来保证消息的一致性。 - 集群和高可用:ActiveMQ支持集群部署,可以提高服务的可用性和容错性。 7. **测试与监控** - 可以编写单元测试验证...
Spring、JMS、ActiveMQ和Tomcat是Java开发中常用的技术组件,它们分别扮演着不同的角色,构建出高效的企业级消息通信系统。本教程将详细阐述这些技术的使用及其相互结合的方式。 首先,Spring是一个开源的Java应用...
4. 事务支持:Spring Boot与ActiveMQ结合可以使用JMS事务,确保消息的原子性。 5. 容错与高可用:ActiveMQ可以通过集群、网络故障切换等手段提高系统的容错性和可用性。 四、Apache ActiveMQ 5.17.5 版本特点 5.17....
当SpringBoot与ActiveMQ结合时,可以轻松地构建高效、可扩展的消息驱动应用程序。下面将详细介绍如何在SpringBoot中集成ActiveMQ。 首先,我们需要在SpringBoot项目中引入ActiveMQ的相关依赖。这通常通过在`pom.xml...
在实际开发中,结合Spring Boot的特性,可以进一步简化JMS与ActiveMQ的整合过程。Spring Boot提供了自动配置的能力,使得开发者无需过多关注配置细节,就能快速搭建起基于JMS的消息处理系统。然而,在高并发、高可用...
**Spring MVC + JPA(Hibernate4) + Redis + ActiveMQ:构建高效、全面的Web应用** Spring MVC 是Spring框架的一部分,专门用于构建Web应用程序的模型-视图-控制器(MVC)架构。它提供了一个灵活的请求处理机制,...
**4.3 结合Spring框架** - **依赖注入**:通过Spring的依赖注入功能简化ActiveMQ的配置。 - **事务管理**:利用Spring提供的事务管理机制增强消息的可靠性。 #### 五、ActiveMQ的Transport **5.1 多种传输协议** ...
ActiveMQ Kafka RabbitMQ RocketMQ 目前Spring Cloud Bus 支持 RabbitMQ 和 Kafka,spring-cloud-starter-bus-amqp 、spring-cloud-starter-bus-kafka RabbitMQ简介 RabbitMQ是一个开源的AMQP实现,服务器端用...
在上述示例中,可以看到Spring定时器与ActiveMQ消息队列的结合。这种结合方式可以有效地提高系统的扩展性和稳定性,避免因大量任务同时执行而导致系统负载过高的问题。 #### 七、总结 Spring定时器为开发者提供了...
SpringCloud分布式消息处理是微服务架构中重要的组件之一,它主要用于解决服务之间的异步通信和解耦。本文将深入探讨分布式...选择合适的MQ类型和模式,结合SpringCloud的工具,能够更好地满足不同场景下的通信需求。
在Spring Boot项目中,通常会通过Spring AMQP或Apache ActiveMQ等库来集成消息中间件,实现异步处理、事件驱动的架构。但具体在这个项目中使用的是哪一种消息中间件,需要查看源代码才能确定。 3. **Redis缓存**:...
SpringBoot通过“起步依赖”(Starter POMs)来简化Maven配置,这些依赖提供了常用功能的默认设置,例如数据访问、Web开发、安全等。在你的项目中,可能已经包含了`spring-boot-starter-web`起步依赖,这是创建...
6. **Spring Boot**:近年来,Spring Boot成为快速开发Spring应用的首选,它简化了配置,提供了大量的默认设置,使得开发者可以更快地启动和运行项目。 7. **Spring Security**:用于保护Spring应用的安全框架,...
虽然学习Spring Security可能需要一定的投入,尤其是理解和配置其复杂的权限规则,但它对于构建安全可靠的系统至关重要。 #### 其他JAVA技术与工具 除了上述提到的关键技术,JAVA生态中还有许多其他重要的工具和...