SpringBoot | 第十二章:RabbitMQ 的集成和使用

栏目: 后端 · 发布时间: 6年前

内容简介:上节讲了缓存数据库RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。关于

前言

上节讲了缓存数据库 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 的控制台,是可以看见连接对象的。说明已经正常启动了。

SpringBoot | 第十二章:RabbitMQ 的集成和使用

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 的消息。

SpringBoot | 第十二章:RabbitMQ 的集成和使用

总结

本章节主要是对 RabbitMQ 的集成和简单使用进行了说明,对于高并发系统而言,消息队列是一个常见的解决方案了。比如实现异步消息的通知,实现消费者/生产者模式等。由于对 rabbitmq 没有过多的了解,详细的用法及相关消息队列的知识,可自行搜索相关资料下,这里就不阐述了。前段时间买了本关于 RabbitMQ 方面的书籍,等看完了,也希望能单独写一篇关于消息队列的文章,敬请期待!

最后

目前互联网上很多大佬都有 SpringBoot 系列教程,如有雷同,请多多包涵了。本文是作者在电脑前一字一句敲的,每一步都是实践的。若文中有所错误之处,还望提出,谢谢。


以上所述就是小编给大家介绍的《SpringBoot | 第十二章:RabbitMQ 的集成和使用》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

增长黑客

增长黑客

范冰 / 电子工业出版社 / 2015-7-1 / CNY 59.00

“增长黑客”这一概念近年来兴起于美国互联网创业圈,最早是由互联网创业者Sean Ellis提出。增长黑客是介于技术和市场之间的新型团队角色,主要依靠技术和数据的力量来达成各种营销目标,而非传统意义上靠砸钱来获取用户的市场推广角色。他们能从单线思维者时常忽略的角度和难以企及的高度通盘考虑影响产品发展的因素,提出基于产品本身的改造和开发策略,以切实的依据、低廉的成本、可控的风险来达成用户增长、活跃度上......一起来看看 《增长黑客》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换