媒介
上节讲了缓存数据库
redis
的利用,在实际事情中,一般上在系统可能应用间通信可能举办异步通知(登录后发送短信可能邮件等)时,城市利用动静行罗列办办理此业务场景的解耦问题。这章节讲授下动静行列RabbitMQ
的集成和简朴利用示例。
RabbitMQ先容
RabbitMQ是一个开源的AMQP实现,处事器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在漫衍式系统中存储滚动员静,在易用性、扩展性、高可用性等方面表示不俗。
关于AMQP
(摘自互联网):
AMQP,即Advanced Message Queuing Protocol,高级动静行列协议,是应用层协议的一个开放尺度,昆山软件开发,为面向动静的中间件设计。动静中间件主要用于组件之间的解耦,动静的发送者无需知道动静利用者的存在,反之亦然。 AMQP的主要特征是面向动静、行列、路由(包罗点对点和宣布/订阅)、靠得住性、安详。
题外话:其实Redis
也有提供行列成果。但我以为,redis
照旧专门用在缓存方面吧。
SpringBoot集成RabbitMQ
0.老端正,昆山软件开发,插手pom依赖,这已经是Springboot
的套路了。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>
1.application.properties设置插手rabbitmq相关设置。
RabbitAutoConfiguration
类是其自动加载设置类。
# rabbitmq相关设置 spring.rabbitmq.host=127.0.0.1 spring.rabbitmq.port=5672 spring.rabbitmq.username=guest spring.rabbitmq.password=guest
2.关于设置,以上两步就完成了(Springboot
真的太利便了,写代码都是愉悦的)。正常利用时,若作为一个消费者,我们会设置一个吸收行列,这里为了示例,直接以最小设置来演示下。
设置一个名为okong
的行列
@Configuration public class RabbitConfig { /** * 界说一个名为:oKong 的行列 * @return */ @Bean public Queue okongQueue() { return new Queue("okong"); } }
设置行列处理惩罚类,这里的行列就是上面设置的行列名称。:
Consumer.java
@Component //@RabbitListener 监听 okong 行列 @RabbitListener(queues = "okong") @Slf4j public class Consumer { /** * @RabbitHandler 指定动静的处理惩罚要领 * @param message */ @RabbitHandler public void process(String message) { log.info("吸收的动静为: {}", message); } }
编写动静发送类,这里直接写成api要领,利便调试。
DemoController.java
/** * 简朴示例 发送和吸收行列动静 * @author oKong * */ @RestController public class DemoController { //AmqpTemplate接口界说了发送和吸收动静的根基操纵,今朝spring官方也只集成了Rabbitmq一个动静行列。。 @Autowired AmqpTemplate rabbitmqTemplate; @GetMapping("/send") public String send(String msg) { //发送动静 rabbitmqTemplate.convertAndSend("okong", msg); return "动静:" + msg + ",已发送"; } }
3.启动应用,正常设置乐成,在Rabbitmq
的节制台,是可以瞥见毗连工具的。说明已经正常启动了。
劳务调派信息打点系统 )public String send(String msg) {//发送动静rabbitmqTemplate.convertAndSend(okong" src="/uploads/allimg/c180824/15350545411O30-15G0.jpg" />
4.会见:http://127.0.0.1:8080/send?msg=hello,rabbitmq, 在节制台就可以瞥见消费者已经消费到此条动静了:
2018-07-24 22:59:00.777 INFO 11424 --- [cTaskExecutor-1] c.l.l.springboot.chapter12.Consumer : 吸收的动静为: hello,rabbitmq
节制台界面,在Queues
标签页,也可以查察到行列okong
的动静。
总结
本章节主要是对
RabbitMQ
的集成和简朴利用举办了说明,对付高并发系统而言,动静行列是一个常见的办理方案了。好比实现异步动静的通知,昆山软件开发,实现消费者/出产者模式等。由于对rabbitmq
没有过多的相识,具体的用法及相关动静行列的常识,可自行搜索相关资料下,这里就不叙述了。前段时间买了本关于RabbitMQ
方面的书籍,等看完了,也但愿能单独写一篇关于动静行列的文章,敬请等候!
最后