springboot 整合amq 分别使用MQ
Queue、Topic
实现消息接收和发送
依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
<version>2.3.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
配置
server:
port: 8081
spring:
activemq:
broker-url: tcp://127.0.0.1:61616
user: admin
password: admin
jms:
pub-sub-domain: true #true-topic false-queue
#配置队列或topic名称
queue_name: guan-queue
topic_name: guan-topic
Queue
- 队列配置
@Configuration
@EnableJms
public class AMQConfig {
@Value("${queue_name}")
private String queueName;
@Bean
public Queue queue(){
return new ActiveMQQueue(queueName);
}
}
- 生产者
@Component
public class QueueProducer {
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
@Autowired
private Queue queue;
@Scheduled(fixedRate = 3000)
public void produceMsg(){
jmsMessagingTemplate.convertAndSend(queue,"hello queue");
}
}
- 消费者
@Configuration
public class QueueCustomer {
@JmsListener(destination = "${queue_name}")
public void getMessage(TextMessage message) throws JMSException {
System.out.println("接收到消息:"+message.getText());
}
}
Topic
- topic 配置
@Configuration
@EnableJms
public class TopicConfig {
@Value("${topic_name}")
private String topicName;
@Bean
public Topic topic(){
return new ActiveMQTopic(topicName);
}
}
- 生产者
@Configuration
public class TopicProducer {
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
@Autowired
private Topic topic;
@Scheduled(fixedRate = 5000)
public void getTopicMsg(){
jmsMessagingTemplate.convertAndSend(topic, "hello topic");
}
}
- 消费者
@Configuration
public class TopicCustomer {
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
@JmsListener(destination = "${topic_name}")
public void getTopicMessage(TextMessage textMessage) throws JMSException {
System.out.println(textMessage.getText());
}
}