1. 引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
2. springboot配置文件:
spring:
activemq:
broker-url: failover:(nio://127.0.0.1:61616)
user: admin
password: admin
in-memory: false #是否启用内存模式(就是不安装MQ,项目启动时同时启动一个MQ实例)
packages:
trust-all: true #信任所有的包
pool:
enabled: false
producerTopic: ledTopic # 生产者会话topic
consumerTopic: ledTopic # 消费者会话topic
3. ActiveMQ配置文件:
@Configuration
@EnableJms
@SuppressWarnings("all")
public class ActiveMQConfig
{
@Value("${spring.activemq.producerTopic}")
private String producerTopic;
@Bean
public JmsListenerContainerFactory jmsTopicListenerContainerFactory(ConnectionFactory connectionFactory)
{
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setPubSubDomain(true);
return factory;
}
@Bean
public Topic topic()
{
return new ActiveMQTopic(producerTopic);
}
}
4. 创建生产者
@Slf4j
@Component
public class ActiveMQProducer
{
@Autowired
private JmsMessagingTemplate jmsTemplate;
@Autowired
private Topic topic;
public void sendTopicMsg(String msg)
{
log.info("发送消息:" + msg);
jmsTemplate.convertAndSend(topic, msg);
}
}
5. 创建消费者
@Slf4j
@Component
public class ActiveMQConsumer
{
// 接收topic类型消息
// containerFactory对应配置类中注册JmsListenerContainerFactory的bean名称
@JmsListener(destination = "${spring.activemq.consumerTopic}", containerFactory = "jmsTopicListenerContainerFactory")
public void ListenTopic(String msg)
{
log.info("收到消息:" + msg);
}
}