前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >rabbitMQ精讲系列第十八篇 高级整合应用第一篇

rabbitMQ精讲系列第十八篇 高级整合应用第一篇

原创
作者头像
凯哥Java
修改2019-08-12 10:51:40
4630
修改2019-08-12 10:51:40
举报
文章被收录于专栏:凯哥Java凯哥Java

在本章学习中,我们主要是和应用整合的。下面来看看本章我们主要内容:

整合spring AMQP和spring boot及spring cloud整合。以及在整合中需要注意及工作中踩过的坑。如同如下图:

本文主要内容:

使用代码创建rabbitAdmin,通过rabbitAdmin操作MQ

本文是《RabbitMQ精讲系列》教程中的第十八篇 高级应用整合的第一篇。如果对RabbitMQ感兴趣的朋友,可以从第一章开始。

RabbitMQ整合Spring AMQP实战

在Spring AMQP整合中,重要的组件:

RabbitAdmin类可以和好的操作RabbitMQ,在spring中直接进行注入即可:

注意:

autoStartup必须设置为ture,否则spring容器不会加载类.

为什么要获取RabbitAdmin?

    RabitAdmin底层实现就是从spring容器中获取Exchange、Bingding、Routingkey以及Queue的@Bean声明。

使用RabbitTemplate的execute方法执行对应的声明、修改、删除等一系列的RabbitMQ基础功能操作。

代码演示:

添加pom文件:

<!-- rabbitmq--><dependency>  <groupId>com.rabbitmq</groupId>  <artifactId>amqp-client</artifactId>  <version>3.6.5</version></dependency><!-- spring 启动--><dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-amqp</artifactId></dependency>

需要注意:

如果spring boot 是1.5.6版本的时候,rabbit的版本号可以使用3.6.5以上

如果spring boot的版本是2.1.x的时候,rabbit的版本号可以使用5.7.x

创建rabbitMQConfig:

1:先获取到ConnectionFactory.

注意:是amqp.rabbit下的。如下图:

创建ConnectionFactory:

2:获取rabbitAdmin的代码:

注意:setAutoStartUp必须设置为true

进行测试:

因为在RabbitMQConfig中我们已经将rabbitAdmin由spring容器管理了。所以在这里,我们直接使用autowired就可以。如下图:

我们先在页面管控台查看:

并没有。启动后,在查看,是否已经创建。

测试类启动成功:

在页面管控台查看,exchange交换机是否已经创建:

已经创建成功。说明,rabbitAdmin我们成功了。

通过rabbitAdmin创建Queue:

创建绑定关系:

启动后,查看test_spring_direct_queue是否绑定了test_spring_direct交换机。

我们发现绑定成功了。

绑定方式二:使用BindingBuilder的链式

rabbitAdmin.declareBinding(     BindingBuilder.bind(new Queue("test_spring_topic_queue",false))    //创建队列     .to(new TopicExchange("test_spring_topic",false,false))    //绑定交换机     .with("user.#")    //设置routingkey);

需要注意的:当时fanout的时候,在bingdingBuilder的时候没有with.因为fanout的不需要routingkey。

本节总结:

    使用spring的@Bean注解怎么创建connection工厂及怎么创建rabbitAdmin以及怎么使用。

下节预告:

本文出处:凯哥Java(kaigejava)

凯哥公众号:凯哥Java(kaigejava)

凯哥个人博客:www.kaigejava.com 

   我们知道在rabbitMQ的基础API中得到队列、binding以及路由是通过channel对象获取的,如下图。那么在springAMQP模式下怎么声明呢?在下节课中,我们将要讲解到的。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档