媒介
上节讲了缓存数据库
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方面的书籍,等看完了,也但愿能单独写一篇关于动静行列的文章,敬请等候!
最后