开始

业务逻辑层
image.png
image.png

orderService做和用户请求的相关逻辑
image.png
首先加上Service注解,让Spring知道这是一个Bean
image.png

首先要做的是如何用java来声明队列,声明Exchange。把业务逻辑全都写在handleMessage方法里面
image.png
java操作RabbitMQ首先要先链接上RabbitMQ
我们要用RabbitMQ包下面的ConnectionFactory
image.png
设置链接的地址
image.png
connection声明在外面,然后finally里面关闭这个链接。
image.png
但是在之类我们不这么做。交给大家一个方便的方法。
*
声明消息队列,交换机,绑定,消息的处理
publicvoidhandlelessage
Connectionfactoryconectionfactoryc
connectionFactory.setHost(localhost);
try(Connectionconnectioncomectionfactory.newoectin
Add’catchclausels)
Addexccptionstomcthodegnature
EADDmethodcontrocttonewConnecbion’
7Annotatemethod’newConnection.m..
image.png

抛出这俩异常.
image.png
这是因为在Connection里面实现了Closeable接口。
image.png
它实现了closeable接口 所以我们就可以用下面这种方法
image.png
再把channel建立起来
image.png
声明交换机
每两个微服务之间通信使用单独的exchange,这样理解起来和用起来会比较的清晰。
不同交换机之间的特点也会理解的比较清晰。

声明订单微服务和餐厅微服务之间的消息交换的的交换机。
image.png

image.png
这是exchange的名称。
image.png

image.png
交换机的类型是direct
image.png
autoDelete如果没有队列需要这个交换机,rabbit会自动把它删掉。
image.png
最后一个参数是特殊属性,子啊之类我们不需要特殊属性。所以填null就可以了。

image.png
持久化到硬盘
image.png

声明队列

队列的名称,这个东西是个啥,一定要先写在前面。
image.png
参数2 ,是否持久化
image.png
这个队列是不是这个Conenction独占的,如果是独占 我们的应用连上后,其他的应用就无法链接了。我们不希望这样。
image.png

image.png

交换机和队列绑定
image.png

骑手的交换机和队列声明

复制上面代码,修改了交换机和队列的名称
image.png

这里没有再声明队列。用的是和上面同一个队列。
image.png

说明

声明了一个队列,两个交换机。把这个队列用相同的绑定key绑定到了这一个交换机上。这就是两个交换机一个队列。
image.png

main方法调试

改成静态方法,
image.png
在main方法中直接调用

image.png
启动方法测试
image.png
多了两个交换机
image.png

多了一个队列
image.png

点进去队列,队列的绑定
image.png

image.png
image.png
image.png

本节搞定了用java声明exchange和queue

结束