您的位置:首页 > 运维架构 > Tomcat

activeMQ+spring+tomcat简单配置

2012-07-02 18:27 435 查看
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“;说明发送消息成功,自动接收消息也成功了;

以上只是简单的配置应用,欢迎各位大虾指点不足。谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: