1、pom文件中引入activemq的依赖(这里使用的sprinboot版本是2.1.3.Release)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
2、在application.yml或者application.properties中配置activemq相关信息
#配置activemq
spring:
activemq:
#activemq的url
broker-url: tcp://192.168.24.130:61616
#用户名
user: admin
#密码
password: 445221abcd
#是否使用线程池
pool:
enabled: false
#是否信任所有包
packages:
trust-all: true
#默认情况下,activemq使用的是queue模式,如果要使用topic模式,必须设置为true
jms:
pub-sub-domain: false
3、在主启动类中启用Jms
@EnableJms
@SpringBootApplication
public class SpringbootActivemqDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootActivemqDemoApplication.class, args);
}
}
4、编写配置类,实现程序能同时监听queue或topic
@Configuration
public class ActivemqConfig {
/**
* 实现监听queue
*
* @param connectionFactory
* @return
*/
@Bean
public JmsListenerContainerFactory<?> queueContainerFactory(ConnectionFactory connectionFactory){
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setPubSubDomain(false);
return factory;
}
/**
* 实现监听topic
*
* @param connectionFactory
* @return
*/
@Bean
public JmsListenerContainerFactory<?> topicContainerFactory(ConnectionFactory connectionFactory){
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setPubSubDomain(true);
return factory;
}
}
5、编写消息生产者与消息消费者
@Service
public class ProducerServiceImpl implements ProducerService {
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
/**
* 将User对象转换成Message对象,并发送到queue或者topic
*
* @param destination
* @param user
* @return
*/
@Override
public boolean produce(Destination destination, User user) {
jmsMessagingTemplate.convertAndSend(destination, user);
return true;
}
}
@Service
public class ConsumerServiceImpl implements ConsumerService {
@Override
@JmsListener(destination = "item.queue",containerFactory = "queueContainerFactory")
public void consumeQueue(User user) {
System.out.println(user.toString());
}
@Override
@JmsListener(destination = "chen.topic",containerFactory = "topicContainerFactory")
public void consumeTopic(User user) {
System.out.println(user.toString());
}
}
6、进行测试,这里就略了,直接在test类中注入消息生产者与消费者进行测试即可
PS:这里只是简单的整合使用而已,具体源码分析有空再发出来,有错误的地方还望各位帮忙指出

本文详细介绍如何在SpringBoot项目中整合ActiveMQ,包括依赖引入、配置参数、启动注解、配置类编写及消息生产与消费实现。适用于初学者快速上手ActiveMQ消息中间件。
7353

被折叠的 条评论
为什么被折叠?



