SpringBoot之Jms
撸了今年阿里、网易和美团的面试,我有一个重要发现.......>>>
前言:JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。
安装activemq的教程百度
1.导入依赖相关的jar包
1.4.0提供了单独的spring-boot-starter-activemq
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
1.4.0之前需要分别导入两个依赖
<dependency><groupId>org.springframework</groupId><artifactId>spring-jms</artifactId>
</dependency>
<dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-broker</artifactId>
</dependency>
2.配置MQ配置连接
spring.activemq.in-memory=true //使用内存
spring.activemq.pool.enabled=false //不需要开启连接池
#JMS config
spring.activemq.broker-url=tcp:// :61616 //mq单独服务地址
spring.activemq.user= //用户名
spring.activemq.password= //密码
注意:如果没有设置mq的单独服务地址默认会将在项目启动时启动一个单独的MQ服务。这个时候需要保证该服务不会重启,如果正在异步通信中关闭MQ会造成所有队列中的消息丢失。
3.开启JMS并配置Queue
@Beanpublic Queue queue() {return new ActiveMQQueue("sample.queue");//队列的名字}
在主程序启动 @EnableJms
4.创建消息提供者
package com.wangnian;import javax.jms.Queue;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.stereotype.Component;@Component
public class Producer implements CommandLineRunner {@Autowiredprivate JmsMessagingTemplate jmsMessagingTemplate;@Autowiredprivate Queue queue;@Overridepublic void run(String... args) throws Exception {send("发送消息");}public void send(String msg) {this.jmsMessagingTemplate.convertAndSend(this.queue, msg);}}
demo启动项目执行run方法发送消息
5.创建消息消费者
package com.wangnian;import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;@Component
public class Consumer {@JmsListener(destination = "sample.queue")//这就是配置的bean时候的队列名字public void receiveQueue(String text) {System.out.println(text);}
6.测试
2016-09-04 12:20:01.041 INFO 3436 --- [ main] o.s.c.support.DefaultLifecycleProcessor : Starting beans in phase 2147483647
发送消息
2016-09-04 12:20:01.728 INFO 3436 --- [ main] com.wangnian.SendJmsApplication : Started SendJmsApplication in 1.969 seconds (JVM running for 2.309)
7.配置activemq
activemq有一个web网页控台,如果公网访问的话需要设置一下密码。
修改web控台密码
\conf\jetty-realm.properties
# Defines users that can access the web (console, demo, etc.)
# username: password [,rolename ...]
admin: newadmin, admin 用户名-密码-权限
user: user, user
修改连接密码
\conf\activemq.xml
在broker标签下 systemUsage标签之前加入plugins
<!--启动连接密码--><plugins> <simpleAuthenticationPlugin> <users> <authenticationUser username="${activemq.username}" password="${activemq.password}" groups="users,admins"/> </users> </simpleAuthenticationPlugin> </plugins>
博客地址:http://my.oschina.net/wangnian
SpringBoot之Jms相关推荐
- SpringBoot第二十一篇: springboot集成JMS
springboot对JMS提供了很好的支持,对其做了起步依赖. 构架工程 创建一个springboot工程,在其pom文件加入: <dependency><groupId>o ...
- SpringBoot整合JMS
SpringBoot整合JMS 文章目录 SpringBoot整合JMS 前言 一.JMS.AMQP概念以及区别 二.ActiveMQ安装 三.SpringBoot整合ActiveMQ:队列模式实例 ...
- Springboot 整合 JMS
ActiveMQ JMS 仅支持 Java 平台. 由于 JMS 是一套标准,所以 SpringBoot 整合 JMS 必然是整合 JMS 的某一个实现. Apache ActiveMQ 是一个开源的 ...
- 企业级java b2bc商城系统开源源码二次开发(二十一)springboot集成JMS
构架工程 创建一个springboot工程,在其pom文件加入: 1 2 3 4 <dependency> <groupId>org.springframework.boot& ...
- springboot开启jms服务监控jvm运行情况
启动命令 nohup java -jar -Djava.rmi.server.hostname=服务所在ip -Dcom.sun.management.jmxremote -Dcom.sun.mana ...
- JMS 在 SpringBoot 中的使用
当前环境 Mac OS 10.11.x docker 1.12.1 JDK 1.8 SpringBoot 1.5 前言 基于之前一篇"一个故事告诉你什么是消息队列",了解了消息队列 ...
- SpringBoot开发笔记
文章目录 SpringBoot开发笔记 1.文件上传 2.同源策略配置 3.Restful请求风格 4.拦截器 5.过滤器.监听器.Servlet 6.AOP切面编程 7.启动系统任务 8.Sprin ...
- Zuul上传文件,中文文件名乱码解决办法
问题描述 在项目中又一个上传文件的oss服务,直接调用服务的上传文件成功,如果经过网关zuul服务,上传中文名字的文件,文件名会出现乱码,最终导致上传失败,如果上传英文名字的文件,没有任何问题.怀疑网 ...
- 栋的月结 | 第二回合(定期更新、动态、架构、云技术、算法、后端、前端、收听/收看、英文、书籍、影视、好歌、新奇)[含泪总结.. 憋泪分享!]
开篇词 大家好!以下是我在 2020 年 2 月 1 日至 29 日的所见.所闻.所学和所悟. 现在,我把它们安利给你们. 定期更新 原创专栏: 一文搞定 Linux 管理员手册:既简单又深刻 官方授 ...
最新文章
- 云计算时代,你真的懂 Docker 吗?
- 马斯克说到做到!特斯拉牌呼吸机“交货”,用Model 3零部件打造;网友:我滴神啊...
- Opengl-基本概念-可编程的渲染管线(僵硬啊)
- 金融行业怎么用AI?蚂蚁金服是这么做的
- celery 可视化_3-django进阶之celery
- 因 inode 不足导致数据库登陆报错相关问题
- Python中的文件复制
- 液晶显示屏怎么显示泰文_上海工业液晶显示屏厂家
- 网页版简书界面优化小建议
- ComponentPattern (组合模式)
- 浅谈NLP算法工程师的核心竞争力
- 三种class反编译工具jad、frontEndPlus、jd-gui 的使用方法
- 深井地下水监测测量仪
- 11月程序员全国程序员平均工资
- oracle不产生特定表的归档,oracle数据库归档与非归档
- uniapp 微信小程序获取map地图中心的经纬度地理位置
- C++后台开发应该读的书
- INT 15h系列介绍
- 代码整洁之道 1-3阅读笔记
- 如何将mysql导出数据泵_Oracle数据库之ORACLE 数据泵导入导出数据