`
meiyx
  • 浏览: 181354 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Activemq 结合Spring的常用配置

阅读更多
[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>
分享到:
评论

相关推荐

    springCloud

    ActiveMQ Kafka RabbitMQ RocketMQ 目前Spring Cloud Bus 支持 RabbitMQ 和 Kafka,spring-cloud-starter-bus-amqp 、spring-cloud-starter-bus-kafka RabbitMQ简介 RabbitMQ是一个开源的AMQP实现,服务器端用...

    网络架构师148讲视频课程

    │ 第76节:ActiveMQ结合Spring开发.avi │ 第77节:ActiveMQ支持的传输协议.avi │ 第78节:ActiveMQ消息存储持久化.avi │ 第79节:ActiveMQ的静态网络链接.avi │ 第80节:多线程consumer访问集群.avi │ 第81节...

    java开源包1

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...

    java开源包11

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...

    java开源包2

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...

    java开源包3

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...

    java开源包6

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...

    java开源包5

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...

    java开源包10

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...

    java开源包4

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...

    java开源包8

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...

    java开源包7

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...

    java开源包9

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...

    java开源包101

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...

    Java资源包01

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...

    JAVA上百实例源码以及开源项目

     WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书  Java局域网通信——飞鸽传书源代码,大家都知道VB...

    JAVA上百实例源码以及开源项目源代码

     WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书  Java局域网通信——飞鸽传书源代码,大家都知道VB...

Global site tag (gtag.js) - Google Analytics