activeMQ环境搭建详解
下载demo代码地址:http://download.csdn.net/detail/qq_29582193/9916581
-
官网下载activeMQ http://activemq.apache.org/
-
解压apache-activemq-5.13.0-bin.zip
根据自己使用的操作系统启动MQ笔者的是64位win7系统
如图
启动好的cmd窗口
访问网页测试
-
编写代码如图包含发送者、接收者、测试类和spring的xml配置文件
代码清单
(配置文件)
mq-config.properties
activemq.connection.brokerURL=tcp://localhost:61616
activemq.connection.userName=admin
activemq.connection.password=admin
activemq.queue.example=example.queue
mq-env.xml
<?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" xmlns:oxm="http://www.springframework.org/schema/oxm"
xsi:schemaLocation="http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-3.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
<bean id="configureHolder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:mq-config.properties</value>
</list>
</property>
</bean>
<bean id="mqConnectionFactory" class="org.apache.activemq.spring.ActiveMQConnectionFactory">
<property name="brokerURL" value="${activemq.connection.brokerURL}"></property>
<property name="userName" value="${activemq.connection.userName}"></property>
<property name="password" value="${activemq.connection.password}"></property>
</bean>
<bean id="mqPooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop">
<property name="connectionFactory" ref="mqConnectionFactory">
</property>
<property name="maxConnections" value="100"></property>
</bean>
<bean id="exampleQueue" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="${activemq.queue.example}"></constructor-arg>
</bean>
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="mqPooledConnectionFactory"></property>
<property name="defaultDestination" ref="exampleQueue"></property>
</bean>
</beans>
mq-producer.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="producer" class="com.lcd.activemq.Sender"></bean>
</beans>
mq-consumer.xml
<?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:jms="http://www.springframework.org/schema/jms" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-3.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
<bean id="consumer" scope="prototype" class="com.lcd.activemq.Receiver" />
<jms:listener-container acknowledge="auto" connection-factory="mqPooledConnectionFactory">
<jms:listener destination="${activemq.queue.example}" ref="consumer" method="process"/>
</jms:listener-container>
</beans>
applicationContext.xml
<?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"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<context:component-scan base-package="*"></context:component-scan>
<import resource="mq-env.xml"/>
<import resource="mq-producer.xml"/>
<import resource="mq-consumer.xml"/>
</beans>
(java代码)
Sender.java
package com.lcd.activemq;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
public class Sender {
@Autowired
@Qualifier(value = "jmsTemplate")
private JmsTemplate jmsTemplate;
public void sender(final String message) {
jmsTemplate.send(new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
StringBuilder sb = new StringBuilder();
sb.append("Hello activeMQ ====>message:" + message);
return session.createObjectMessage(sb.toString());
}
});
}
}
Receiver.java
package com.lcd.activemq;
public class Receiver {
public void process(String message) throws Exception {
//Thread.sleep(1000);
System.out.println(message);
}
}
TestApp.java
package com.lcd.activemq;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestApp {
static ApplicationContext ctx = new ClassPathXmlApplicationContext(
"applicationContext.xml");
public static void main(String[] args) throws InterruptedException {
Sender sender = (Sender) ctx.getBean("producer");
int i = 0;
while (true) {
Thread.sleep(1000);
sender.sender("消息:"+i);
i++;
}
}
}
运行结果:
本文demo下载地址http://download.csdn.net/detail/qq_29582193/9916581
主题订阅请参看下一遍文章
《activeMQ消息详解(续) 订阅(主题)消息(消息持久化)》http://blog.csdn.net/qq_29582193/article/details/76512799
欢迎扫描头像关注嘟嘟技术下载更多技术源码!