activeMQ:5.15.14
spring:4.1.3
Ubuntu:20.4
一、安装
1、 直接官网下载
activeMQ官网:
http://activemq.apache.org/
2、上传服务器
rz
3、解压
tar -zxf apache-activemq-5.15.14-bin.tar.gz
mv apache-activemq-5.15.14 activemq
4、开启activeMQ服务
cd /data/activeMQ/activemq/bin/linux-x86-64/
./activemq start
根据自己的服务器选择linux-x86-64 还是linux-x86-32
自己电脑上访问:
http://192.168.xx.xxx:8161/admin/
确定是否安装成功
IP地址为服务器IP地址
5、登录
二、spring整合
pom.xml
<dependencies>
<!-- activemq和spring进行集成需要下面三个jar包 -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.15.14</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>4.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.4.2</version>
</dependency>
</dependencies>
applicationContext-acticemq.xml
<!-- 真正可以产生Connection的ConnectionFactory,由对应的JMS服务厂提供 -->
<bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory" >
<property name="brokerURL" value="tcp://192.168.37.129:61616"/>
</bean>
<!-- Spring用于管理真正的ConnectionFactory的 ConnectionFactory-->
<bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">
<property name="targetConnectionFactory" ref="targetConnectionFactory"/>
</bean>
<!-- Spring 提供的JMS工具类,它可以进行消息发送 -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"/>
</bean>
<!-- 这是队列目的地,点对点的 -->
<bean id="queueDestination" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg>
<value>queue</value>
</constructor-arg>
</bean>
<!-- 这是主题目的地,一对多的 -->
<!-- <bean id="topicDestination" class="org.apache.activemq.command.ActiveMQTopic">
<constructor-arg value="topic"></constructor-arg>
</bean> -->
<!-- MessageListener实现类 -->
<bean id="MyMessageListener" class="cn.itcast.activeMQ.spring.MyMessageListener"></bean>
<!-- 配置一个jsm监听容器 -->
<bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory"></property>
<property name="messageListener" ref="MyMessageListener"></property>
<property name="destination" ref="queueDestination"></property>
</bean>
Product.java
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.command.ActiveMQTextMessage;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
public class Product {
public static void main(String[] args) throws Exception {
String brokerURL="tcp://192.168.37.129:61616";
//创建spring容器
ApplicationContext context =new ClassPathXmlApplicationContext("applicationContext-acticemq.xml");
//从容器中获取JMSTemplate,这个对象是用于发送消息的
JmsTemplate jmsTemplate=context.getBean(JmsTemplate.class);
//从spring容器中获取Destination对象
Destination destination=context.getBean(Destination.class);
//使用JMSTemplate发送消息
jmsTemplate.send(destination,new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
//创建消息体使用TextMessage类型
TextMessage textMessage =new ActiveMQTextMessage();
textMessage.setText("消息1");
System.out.println("发消息了");
return textMessage;
}
});
}
}
MyMessageListener.java
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
public class MyMessageListener implements MessageListener {
@Override
public void onMessage(Message message) {
//判断消息类型是TextMessage
if(message instanceof TextMessage){
TextMessage textMessage=(TextMessage) message;
try {
String text = textMessage.getText().toString();
System.out.println(text);
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}