1. 引入Maven依赖
<!-- SpringBoot Activemq -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
生产者:
配置application
spring:
activemq:
broker-url: tcp://127.0.0.1:61616
user: admin
password: admin
queue: springboot-queue
server:
port: 8080
创建QueueConfig
@Component
public class QueueConfig {
@Value("${queue}")
private String queue;
@Bean
public Queue logQueue() {
return new ActiveMQQueue(queue);
}
}
创建producer
@Component
@EnableScheduling
public class Producer {
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
@Autowired
private Queue queue;
@Scheduled(fixedDelay = 5000)
public void send() {
jmsMessagingTemplate.convertAndSend(queue, "测试消息队列" + System.currentTimeMillis());
}
}
等会启动。
消费者:
spring:
activemq:
broker-url: tcp://127.0.0.1:61616
user: admin
password: admin
queue: springboot-queue
server:
port: 8081
创建Consumer
@Component
public class Consumer {
@JmsListener(destination = "${queue}")
public void receive(String msg) {
System.out.println("监听器收到msg:" + msg);
}
}
然后跟刚才的一起启动,看看控制台就行。
ActiveMQ发布订阅
生产者:
spring:
activemq:
broker-url: tcp://127.0.0.1:61616
user: admin
password: admin
topic: spring-topic
server:
port: 8081
配置TopicProducer
@Component
public class TopicProducer {
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
@Autowired
private Topic topic;
@Scheduled(fixedDelay = 5000)
public void send() {
String msg = System.currentTimeMillis() + "";
System.out.println("采用发布订阅方式,生产者向消费者发送内容:" + msg);
jmsMessagingTemplate.convertAndSend(topic, msg);
}
}
配置TopicConfig
@Component
public class TopicConfig {
@Value("${topic}")
private String topicName;
@Bean
public Topic topic() {
return new ActiveMQTopic(topicName);
}
}
消费者:
配置application
spring:
activemq:
broker-url: tcp://127.0.0.1:61616
user: admin
password: admin
#### 开启发布订阅
jms:
pub-sub-domain: true
topic: spring-topic
server:
port: 8082
配置TopicConsumer
@Component
public class TopicConsumer {
@JmsListener(destination = "spring-topic")
public void receive(String msg) {
System.out.println("发布与订阅消费者接受,生产者内容:" + msg);
}
}