activeMQ+spring+tomcat简单配置

来源:互联网 发布:mac个人文件夹在哪里 编辑:程序博客网 时间:2024/05/17 18:49

activeMQ与spring集成,将activeMQ的配置写到applicationContext.xml中,注意头引用要添加:xmlns:amq="http://activemq.apache.org/schema/core"

xsi:schemaLocation="http://activemq.apache.org/schema/core    http://activemq.apache.org/schema/core/activemq-core-5.6.0.xsd“

部分代码的调用使用了spring注解方式,请注意;

activeMQ的配置如下:

1、嵌入式配置activeMQ,tomcat启动时activeMQ服务随之启动;

<amq:broker useJmx="false" persistent="true">
<amq:persistenceAdapter>  
            <amq:amqPersistenceAdapter directory="d:/amq"/>  
        </amq:persistenceAdapter> 
<amq:transportConnectors>
<amq:transportConnector uri="tcp://localhost:61616"></amq:transportConnector>
</amq:transportConnectors>
</amq:broker>
2、配置连接工厂,生产消息和消费消息都要连接该工厂;
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://localhost:61616" />
</bean>
3、配置jmsTemplate模板,
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
   <property name="connectionFactory" ref="connectionFactory"/>
   <property name="receiveTimeout" value="10000"/>
</bean>
4、配置destination;
<bean id="destination" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="jms-test-queue" />
</bean>
5、配置监听,消费消息方自动接收消息;
<bean id="jmsContainer"
        class="org.springframework.jms.listener.DefaultMessageListenerContainer">
        <property name="connectionFactory" ref="connectionFactory" />
        <property name="destination" ref="destination" />
        <property name="messageListener" ref="getMessage" />  //自定义监听类,
        <property name="sessionTransacted" value="true"/>
    </bean>

以上为activeMQ在applicationContext.xml中的简单配置;以下说一下如何发送和接收消息;
使用注解方式将destination和jmsTemplate注入SendMessage类;
发送消息代码:
import javax.annotation.Resource;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MapMessage;
import javax.jms.Message;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.stereotype.Service;

@Service("sendMessage")
public class SendMessage {
       @Resource
    private JmsTemplate jmsTemplate;
        @Resource
    private Destination destination;
    
    public void send(){
        MessageCreator messageCreator = new MessageCreator(){
            public Message createMessage(Session session){
                TextMessage message = null;
                try {
                    message=session.createTextMessage("hello,I'm activeMQ");
                } catch (JMSException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                return message;
            }
        };
        this.jmsTemplate.send(this.destination, messageCreator);
        }
}

接收消息类,实现MessageListener接口,并实现onMessage方法;
import javax.jms.JMSException;
import javax.jms.MapMessage;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Service;

@Service
public class GetMessage implements MessageListener{
    public void onMessage(Message arg0) {
       TextMessage message = (TextMessage) arg0;
        try {
            System.out.println(message.getText());
           } catch (JMSException e) {
            // TODO Auto-generated catch block
          e.printStackTrace();
        }
    }
}

以上为全部代码,在需要发送消息的地方调用SendMessage类中的send方法就会在控制台上看到输入”Hello,I'am activeMQ“;说明发送消息成功,自动接收消息也成功了;

以上只是简单的配置应用,欢迎各位大虾指点不足。谢谢!








原创粉丝点击