消息队列最近没有使用到,不过还是忍不住研究了一下。
springboot整合ActiveMQ
1. docker部署ActiveMQ
1.1 搜索ActiveMQ
docker search activemq
1.2 下载ActiveMQ的镜像
docker pull webcenter/activemq
1.3 启动ActiveMQ的镜像
docker run -it -d \ # 后台运行
-p 61616:61616 \ # java用的tcp端口
-p 8161:8161 \ # 后台管理系统端口
--name myactivemq \ # 别名
webcenter/activemq # 镜像名称(现在意味着laster)
1.4 打开后台管理界面进行查看
后台访问地址就是:你的ip地址:8161
2. 使用springboot搭建消息提供者
2.1 pom.xml的配置
新建一个sprinboot的项目,然后在pom.xml文件中添加activemq的依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
2.2 application.yml配置信息的添加
server:
port: 8080 # 端口号
spring:
activemq:
broker-url: tcp://172.22.11.231:61616 # 自己的MQ服务器地址,用自己的
jms:
pub-sub-domain: false # false = Queue true = Topic
# 自己定义的队列名称
myqueue: boot-activemq-queue
2.3 启动类上配置@EnableJms注解
@SpringBootApplication
@EnableJms
public class Activemq1Application {
public static void main(String[] args) {
SpringApplication.run(Activemq1Application.class, args);
}
}
2.4 创建消息提供者(provider)
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.jms.Queue;
/**
* @author 10166815
*/
@RestController
public class ProviderController {
/**
* 获取配置文件中的队列名称
*/
@Value("${myqueue}")
private String myqueue;
/**
* 注入springboot封装的工具类
*/
@Resource
private JmsMessagingTemplate jmsTemplate;
@RequestMapping("send")
public void send(String name) {
jmsTemplate.convertAndSend(myqueue, name);
}
}
2.5 启动项目,用postman进行测试即可
现在进入控制界面查看Queue会发现并没有任何消息
打开postman输入地址,配置参数进行访问:
再次查看Queue之后会发现出现了一个消息:
3. 使用springboot搭建消费者
可新建一个springboot的项目用来做消费者
3.1 pom.xml的配置
新建一个sprinboot的项目,然后在pom.xml文件中添加activemq的依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
3.2 application.yml配置信息的添加
server:
port: 8081 # 端口号
spring:
activemq:
broker-url: tcp://172.22.11.231:61616 # 自己的MQ服务器地址,用自己的
jms:
pub-sub-domain: false # false = Queue true = Topic
# 自己定义的队列名称
myqueue: boot-activemq-queue
3.3 创建消费者
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
import javax.jms.JMSException;
import javax.jms.TextMessage;
/**
* @author 10166815
*/
@Component
public class ConsumerController {
/**
* 使用JmsListener配置消费者监听的队列,其中name是接收到的消息
* @param textMessage
* @return
*/
@JmsListener(destination = "${myqueue}")
public void handleMessage(String message) {
System.out.println("成功接受name: " + message);
}
}
3.4 启动项目,查看控制台是否将信息输出
控制台打印出消息
控制页面也显示该消息被处理
至此,springboot简单整合ActiveMQ就结束了。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。