风人园

弱水三千,只取一瓢,便能解渴;佛法无边,奉行一法,便能得益。
随笔 - 99, 文章 - 181, 评论 - 56, 引用 - 0
数据加载中……

ActiveMq 的安装及整合spring 使用


1、下载 安装
在windows xp 上,直接解压就可以使用
在2003 上,还需要配置一下,缺一个文件,否则无法启动

2、mq 配置
默认使用 文件持久化的方式,无需进行配置,只需要通过代码,标记消息为持久化即可

//设置 消息为 ‘持久化’ 消息,队列服务器重启后,会重新载入
message.setJMSDeliveryMode(DeliveryMode.PERSISTENT);
message.setString("context", context);

2、整合spring
mq的spring 配置文件, 此处三个bean
 mq 服务器配置,sender ,监听器
完成系统的消息发送和接收

<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
        
<property name="brokerURL" value="tcp://10.10.1.31:61616" />
    
</bean>
    
    
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
        
<property name="connectionFactory" ref="connectionFactory" />
    
</bean>
     
    
<!--  ============================  消息发送 ============================== -->
    
    
<!-- ecp.sd.log -->
    
<bean id="logDestination" class="org.apache.activemq.command.ActiveMQQueue">
        
<constructor-arg value="km.wlog"/>
    
</bean>
    
    
<bean id="logMessageSender" class="com.chint.mq.sender.LogMessageSender">
        
<property name="destination" ref="logDestination" />
        
<property name="jmsTemplate" ref="jmsTemplate" />
    
</bean>
    
    
<!--=============================  队列监听器  ==========================  -->
    
    
<!-- 日志 队列监听器 
    
<bean id="logContextListener" class="com.chint.mq.listener.LogContextListener">
    
</bean>
    
    
<bean class="org.springframework.jms.listener.SimpleMessageListenerContainer">
        
<property name="connectionFactory" ref="connectionFactory"/>
        
<property name="destinationName" value="km.wlog"/>
        
<property name="messageListener" ref="logContextListener"/>
    
</bean>
    
-->

消息发送者
@Service
public class LogMessageSender extends BaseMessageSender{
    
    
public void sendMessage(final String context) {
        jmsTemplate.send(destination, 
new MessageCreator(){

            @Override
            
public Message createMessage(Session session) throws JMSException {
                MapMessage message 
= session.createMapMessage();
                
                
//设置 消息为 ‘持久化’ 消息,队列服务器重启后,会重新载入
                message.setJMSDeliveryMode(DeliveryMode.PERSISTENT);
                message.setString(
"context", context);
                
                logger.info(
"KM INFO [LogMessageSender] send message context ({})", context);
                
                
return message;
            }

            
        }
);
    }


}

消息接受者
/**
 * 
@author wxf
 *
 
*/

public class LogContextListener extends BaseContextListener implements MessageListener{

    @Autowired
    
private WorkLogManager workLogManager;
    
    @Override
    
public void onMessage(Message arg) {
        
if(arg instanceof MapMessage) {
            MapMessage message 
= (MapMessage)arg;
            
            
try {
                String context 
= message.getString("context");
                logger.info(
"KM INFO [LogContextListener] get message context ({})", context);   
            }
 catch (JMSException e) {
                
throw JmsUtils.convertJmsAccessException(e);
            }

        }
 else {
            System.out.println(arg.toString());
        }

    }


}


以上就完成了 MQ的使用,比较简单。

通过spring使用mq从代码来讲还是很简单的,但是mq的性能可能需要额外的调整一下才能达到最佳的状态,特别是大数量的情况下。

仅作记录

posted on 2011-11-09 09:25 风人园 阅读(625) 评论(0)  编辑  收藏 所属分类: MQ


只有注册用户登录后才能发表评论。


网站导航: