JMS(Java Message Service)即Java消息服务,是基于JVM消息代理的规范,而ActiveMQ是一个JMS消息代理的实现。
安装
ActiveMQ可以通过官网安装包进行安装,这是普通的方式。如果测试或者练习使用,还有简单的安装方式,如docker:
docker run -dit -p 61616:61616 -p 8161:8161 cloudesire/activemq
安装好后打开 http://localhost:8161 就可以看到管理界面,默认用户名密码是 admin/admin。
或者通过内嵌方式:

注意,默认的activemq依赖spring-boot-starter-activemq包含了上面的内嵌方式,所以如果使用内嵌方式可以不加activemq-broker依赖。
实战
下面开始写代码,首先创建项目:

然后配置activemq服务(本次使用docker安装):

启动类不做任何改变,增加一个配置类,配置一个消息队列:

定义消息发送者,向这个队列发消息:

监听这个队列,实时打印接到的消息:

最后定义一个控制器发送消息:

启动项目,执行接口:


可以看到接收和发送消息成功!
上面是连接的docker的消息服务,下面使用内嵌模式,改为内嵌模式非常简单,代码不用做任何改动,把上面的activemq的配置全部去掉:

这样就可以了,然后重启项目,

可以看到控制台内容变了,显示了连接默认的消息服务。
重新访问发送消息的接口,发送依然没有问题:


内嵌方式很适合学习或者测试使用,但是不建议在生产环境使用。
代码地址: https://gitee.com/blueses/spring-boot-demo
网友评论