开始
实战
这里新建了队里和绑定关系。把OrderService用到的队列绑定在了交换机上。用来和其他的四个微服务进行通信。
做完这个业务逻辑,再起一个监听
使用Spring boot的自动注入
所有的@Configuration注解的类里面,它认为是config类,就是配置类,配置类里面所有加@Autowaired的注解的方法启动的时候会被自动的执行。
上面启动类。既然是启动的时候自动执行,那么我们就不需要在Service类里面写这么一堆的代码了。
我们把声明交换机队列 和绑定关系的这一堆代码放在config类里面
继承了抽象工厂类
抽象工厂类实现了工厂类。所有CachingConnectionFactory其实就是我们之前用的ConnectionFactory的一个别的继承下来的一个实现类。
ConnectionFactory是amqp包下面的。
点进去 我们之前用到的connectionFacory
对接Spring boot节本上都要用amqp这个包下面的
CachingConnectionFactory里面包装了我们之前使用的ConnectionFactory
创建交换机channel
创建交换机对象
它是一个抽象类,抽象类,必须用它的实现,
ctrl+alt+B看下它的实现
前缀对应我们之前讲的路由的四种类型
参数少传了,ctrl+鼠标。看到这个方法有3个重载。
声明队列
先定义queue的对象
三个方法。
我们使用第一个构造的重载就可以了
这样就定义好了queue
绑定
还缺少一个参数
通过上面这种方式,实现了下面这种原来的代码的效果
进入到declareExchange里面。
匿名函数,里面的方法体。
最底层调用的还是我们最开始使用的exchangeDeclare
deliveryman的声明
settlement
它在业务代码和channel之间加了中间的层,我们不直接去操作这个channel。我们一旦不直接去操作channel的话,它可以避免很多低级的操作,比如channel的新建和关闭,防止链接的泄露。在这里我们完全不需要担心。因为rabbitAdmin,restTemplate都帮我们处理好了。只要我们关心我们的抽象业务就可以了。
测试
切到管控台
运行orderService
报了链接的异常
要把rabbitMq的账号和密码加上去
再次启动测试
这几个exchange都出来了
队列
绑定关系都声明好了。说明我们的AMQP的使用是没问题的。