ActiveMQ配置

加载核心XML文件,配置MQ的监听和发送:

<?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:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans       
	  http://www.springframework.org/schema/beans/spring-beans-2.5.xsd     
	  http://www.springframework.org/schema/context      
      http://www.springframework.org/schema/context/spring-context-2.5.xsd"
	default-autowire="byName">  
	<!-- 配置connectionFactory -->  
 	<bean id="connectionFactory"
		class="org.apache.activemq.ActiveMQConnectionFactory">
		<property name="brokerURL">
			<value>tcp://192.168.45.112:61616</value>
		</property>
	</bean> 
	<!-- 发送时获取的Template,引入 connectionFactory 发送给上面配置的url-->
	<bean id="jmsTemplate"
		class="org.springframework.jms.core.JmsTemplate">
		<property name="connectionFactory">
			<ref bean="connectionFactory" />
		</property>
	</bean>
  <!-- 发送消息 ,发送消息到 com.baidu.web.server.topic通道-->
    <bean id="destination" class="org.apache.activemq.command.ActiveMQTopic">  
        <constructor-arg index="0" value="com.baidu.web.server.topic" />  
    </bean>  
    
  	<!-- MQ接收消息,接收 com.baidu.server.web.topic 通道的消息 -->
  	<bean id="webTopicDestination"
		class="org.apache.activemq.command.ActiveMQTopic">
		<constructor-arg index="0"
			value="com.baidu.server.web.topic">
		</constructor-arg>
	</bean>
	
	<!-- 接收消息监听的类 onMessage监听消息接收类 -->
	<bean id="messageReceiver" class="com.baidu.service.TsmOnMessage"></bean>
    <!-- 消息监听     -->  
   <bean
		class="org.springframework.jms.listener.DefaultMessageListenerContainer">
		<property name="concurrentConsumers" value="1" />
		<property name="connectionFactory" ref="connectionFactory" />
		<property name="destination" ref="webTopicDestination" />
		<property name="messageListener" ref="messageReceiver" />
		<property name="pubSubNoLocal" value="false"></property>
	</bean> 
</beans>


MQ的监听类: 在onMessage方法中,获取到message,可以去处理。

public class TsmOnMessage implements MessageListener {

	private Logger logger = Logger.getLogger(TsmOnMessage.class);

	public void onMessage(Message message) {
			try {
				ObjectMessage objectMessage = (ObjectMessage) message;
			
			} catch (JMSException e) {
				logger.error("获取消息队列内容失败:" + e);
			}
		}


}


发送消息到MQ上:

public class TsmSendMessage implements ApplicationContextAware{

	private static Logger logger=Logger.getLogger(TsmSendMessage.class);
	
	private static ApplicationContext context;

	public static void putMessage(final ITsmSignal obj) {
		synchronized(obj){	
			try {
			JmsTemplate template = (JmsTemplate) context.getBean("jmsTemplate");
			Destination destination = (Destination) context.getBean("destination");
			 template.send(destination, new MessageCreator(){  
		            public Message createMessage(Session session) throws JMSException {  
		            	Message message=session.createObjectMessage(obj);
		                return message;  
		            }  
		        });  
			 		logger.info("发送节点信息到消息队列上成功");
				} catch (Exception e) {
					logger.error("发送节点信息到消息队列上失败:"+e,e);
				}
		}

	}

	
	//系统加载时,获取到ApplicationContext
	@SuppressWarnings("static-access")
	public void setApplicationContext(ApplicationContext context)
	throws BeansException {
		this.context=context;
	}
	public static ApplicationContext getContext(){
		return context;
	}
}


 

当然,在发送消息的时候,需要吧applicationContext加载进去,在spring中加载下就好:

 <bean class="com.baidu.service.TsmSendMessage"></bean>


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值