开始

image.png

image.png

image.png
红色的是常用的。
image.png

实战

image.png

这里新建了队里和绑定关系。把OrderService用到的队列绑定在了交换机上。用来和其他的四个微服务进行通信。
image.png
做完这个业务逻辑,再起一个监听
image.png

使用Spring boot的自动注入

所有的@Configuration注解的类里面,它认为是config类,就是配置类,配置类里面所有加@Autowaired的注解的方法启动的时候会被自动的执行。
image.png
上面启动类。既然是启动的时候自动执行,那么我们就不需要在Service类里面写这么一堆的代码了。
image.png
我们把声明交换机队列 和绑定关系的这一堆代码放在config类里面
继承了抽象工厂类
image.png
抽象工厂类实现了工厂类。所有CachingConnectionFactory其实就是我们之前用的ConnectionFactory的一个别的继承下来的一个实现类。
image.png
ConnectionFactory是amqp包下面的。
image.png
点进去 我们之前用到的connectionFacory
image.png

image.png
image.png
对接Spring boot节本上都要用amqp这个包下面的
image.png
CachingConnectionFactory里面包装了我们之前使用的ConnectionFactory
image.png

image.png

image.png

创建交换机channel

创建交换机对象
image.png
它是一个抽象类,抽象类,必须用它的实现,image.png
ctrl+alt+B看下它的实现
image.png

image.png
前缀对应我们之前讲的路由的四种类型
image.png

image.png
参数少传了,ctrl+鼠标。看到这个方法有3个重载。
image.png

image.png

image.png
这样我们直接调用最简单的这个构造函数就可以了。
image.png
image.png

声明队列

先定义queue的对象
image.png
三个方法。
image.png
image.png
我们使用第一个构造的重载就可以了
image.png
这样就定义好了queue
image.png

绑定

image.png
还缺少一个参数
image.png

image.png
通过上面这种方式,实现了下面这种原来的代码的效果
image.png
进入到declareExchange里面。
image.png
匿名函数,里面的方法体。
image.png
最底层调用的还是我们最开始使用的exchangeDeclare
image.png
deliveryman的声明
image.png
settlement
image.png

image.png
image.png

image.png
它在业务代码和channel之间加了中间的层,我们不直接去操作这个channel。我们一旦不直接去操作channel的话,它可以避免很多低级的操作,比如channel的新建和关闭,防止链接的泄露。在这里我们完全不需要担心。因为rabbitAdmin,restTemplate都帮我们处理好了。只要我们关心我们的抽象业务就可以了。

测试

切到管控台
image.png

运行orderService
image.png

报了链接的异常
image.png
要把rabbitMq的账号和密码加上去
image.png
再次启动测试
image.png

image.png
这几个exchange都出来了
image.png
队列
image.png

绑定关系都声明好了。说明我们的AMQP的使用是没问题的。
image.png

结束