消息发送者
1、创建普通的maven工程12-activemq-spring-sender作为 消息发送者
2、在pom.xml文件中添加相关依赖
!-- JMS规范的jar依赖 -->
<dependency>
<groupId>javax.jms</groupId>
<artifactId>javax.jms-api</artifactId>
<version>2.0.1</version>
</dependency>
<!-- activeMQ对jms具体实现的jar依赖 -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-client</artifactId>
<version>5.15.8</version>
</dependency>
<!--spring提供的对jms支持的依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<!--slf4j的简单实现 可加可不加,解决输出警告日志-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.25</version>
</dependency>
注意:高版本的支持,还需要手动加几个spring的依赖,所以我们就用4.3.13.RELEASE
3、创建spring配置文件applicationContext.xml,并导入JMS配置文件,加入扫描包
<context:component-scan base-package="com.bjpowernode.activemq.service"/>
<import resource="applicationContext-jms.xml"/>
4、创建在JMS配置文件applicationContext-jms.xml并配置
● 配置连接工厂ConnectionFactory
● 配置JMS消息模板JmsTemplate
!-- 配置一个连接工厂 -->
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://192.168.235.128:61616"/>
</bean>
<!-- 配置JmsTemplate -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory" />
<property name="defaultDestinationName" value="springQueue" />
</bean>
5、在com.bjpowernode.activemq.service包下创建一个MessageService类,并提供发送消息的方法
@Service
public class MessageService {
@Autowired
private JmsTemplate jmsTemplate;
public void sendMessage(){
jmsTemplate.send(new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage("Hello,Spring ActiveMQ");
}
});
}
}
6、 在com.bjpowernode.activemq包下创建Test类,运行测试发送消息
public class Test {
public static void main(String[] args) {
//启动spring容器
ApplicationContext context =
new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
//根据容器获取bean对象
MessageService messageService = context.getBean("messageService", MessageService.class);
//调用bean对象的方法, 发送消息
messageService.sendMessage();
}
}
7、在ActiveMQ控制台查看效果
1、 创建普通的maven工程12-activemq-spring-receiver作为 消息接收者
2、在pom.xml文件中添加相关依赖(可以从发送项目拷贝)
<!-- JMS规范的jar依赖 -->
<dependency>
<groupId>javax.jms</groupId>
<artifactId>javax.jms-api</artifactId>
<version>2.0.1</version>
</dependency>
<!-- activeMQ对jms具体实现的jar依赖 -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-client</artifactId>
<version>5.15.8</version>
</dependency>
<!--spring提供的对jms支持的依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<!--slf4j的简单实现 可加可不加,解决输出警告日志-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.25</version>
</dependency>
注意:高版本的支持,还需要手动加几个spring的依赖,所以我们就用4.3.13.RELEASE
3、创建spring配置文件applicationContext.xml,并导入JMS配置文件,加入扫描包(可以从发送项目拷贝)
<context:component-scan base-package="com.bjpowernode.activemq.service"/>
<import resource="applicationContext-jms.xml"/>
4、创建在JMS配置文件applicationContext-jms.xml并配置
● 配置连接工厂ConnectionFactory
● 配置JMS消息模板JmsTemplate
<!-- 配置一个连接工厂 -->
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://192.168.235.128:61616"/>
</bean>
<!-- 配置JmsTemplate -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory" />
<property name="defaultDestinationName" value="springQueue" />
</bean>
5、在com.bjpowernode.activemq.service包下创建一个MessageService类,并提供接收消息的方法
@Service
public class MessageService {
@Autowired
private JmsTemplate jmsTemplate;
public void receiveMessage(){
Message message = jmsTemplate.receive();
if(message instanceof TextMessage){
try {
String text = ((TextMessage) message).getText();
System.out.println("接收到的消息为:" + text);
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
6、在com.bjpowernode.activemq包下创建Test类,运行测试发送消息
public class Test {
public static void main(String[] args) {
//启动spring容器
ApplicationContext context =
new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
//根据容器获取bean对象
MessageService messageService = context.getBean("messageService", MessageService.class);
//调用bean对象的方法, 发送消息
messageService.receiveMessage();
}
}
7、在ActiveMQ控制台查看效果