继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

RabbitMQ的集成和使用

holdtom
关注TA
已关注
手记 1846
粉丝 240
获赞 991


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的队列

@Configurationpublic class RabbitConfig {    

    /**

     * 定义一个名为:oKong 的队列

     * @return

     */

    @Bean

    public Queue okongQueue() {        return new Queue("okong");

    }

}

配置队列处理类,这里的队列就是上面配置的队列名称。:

Consumer.java

@Component//@RabbitListener 监听 okong 队列@RabbitListener(queues = "okong")@Slf4jpublic class Consumer {    /**

     * @RabbitHandler 指定消息的处理方法

     * @param message

     */

    @RabbitHandler

    public void process(String message) {

        log.info("接收的消息为: {}", message);

    }

}

编写消息发送类,这里直接写成api方法,方便调试。

DemoController.java

/**

 * 简单示例 发送和接收队列消息

 * @author oKong

 *

 */@RestControllerpublic class DemoController {    

    //AmqpTemplate接口定义了发送和接收消息的基本操作,目前spring官方也只集成了Rabbitmq一个消息队列。。

    @Autowired

    AmqpTemplate rabbitmqTemplate;    

    @GetMapping("/send")    public String send(String msg) {        //发送消息

        rabbitmqTemplate.convertAndSend("okong", msg);        return "消息:" + msg + ",已发送";

    }

}

在此我向大家推荐一个架构学习交流圈:830478757  帮助突破瓶颈 提升思维能力

3.启动应用,正常配置成功,在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的消息。

队列信息

总结

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

©著作权归作者所有:来自51CTO博客作者Ala6的原创作品,如需转载,请注明出处,否则将追究法律责任


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP