SpringBoot整合ActiveMQ
一、队列
1、在pom.xml中引入activemq的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
<version>2.1.5.RELEASE</version>
</dependency>
2、在application.yml配置文件中加入配置
server:
port: 7777
spring:
activemq:
broker-url: tcp://192.168.24.132:61616 #mq连接地址
user: admin #用户名
password: admin #密码
jms:
pub-sub-domain: false #默认是false
#自定义队列名称
myqueue: boot-activemq-queue #主题名称
3、配置bean
import org.apache.activemq.command.ActiveMQQueue;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import javax.jms.Queue;
@Component
public class ConfigBean {
@Value("${myqueue}") //读取配置文件中的队列名称
private String myQueue;
//创建bean
@Bean
public Queue queue() {
return new ActiveMQQueue(myQueue);
}
}
4、创建producer
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.jms.Queue;
import java.util.UUID;
@Component
public class Queue_Produce {
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate ;
@Autowired
private Queue queue ;
// 调用一次一个信息发出
public void produceMessage(){
jmsMessagingTemplate.convertAndSend(queue,"****"+ UUID.randomUUID().toString().substring(0,6));
}
// 带定时投递的业务方法
@Scheduled(fixedDelay = 3000) // 每3秒自动调用
public void produceMessageScheduled(){
jmsMessagingTemplate.convertAndSend(queue,"** scheduled **"+ UUID.randomUUID().toString().substring(0,6));
System.out.println(" produceMessage send ok ");
}
}
4、创建consumer
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
import javax.jms.TextMessage;
@Component
public class Queue_consummer {
@JmsListener(destination = "${myqueue}") // 注解监听
public void receive(TextMessage textMessage) throws Exception{
System.out.println(" *** 消费者收到消息 ***"+textMessage.getText());
}
}
二、Topic
topic和队列相似,只需将queue修改为topic即可
1、修改properties.yml
2、修改bean的创建
3、修改producer
4、修改consumer