开始
业务逻辑层
orderService做和用户请求的相关逻辑
首先加上Service注解,让Spring知道这是一个Bean
首先要做的是如何用java来声明队列,声明Exchange。把业务逻辑全都写在handleMessage方法里面
java操作RabbitMQ首先要先链接上RabbitMQ
我们要用RabbitMQ包下面的ConnectionFactory
设置链接的地址
connection声明在外面,然后finally里面关闭这个链接。
但是在之类我们不这么做。交给大家一个方便的方法。
*
声明消息队列,交换机,绑定,消息的处理
publicvoidhandlelessage
Connectionfactoryconectionfactoryc
connectionFactory.setHost(localhost);
try(Connectionconnectioncomectionfactory.newoectin
Add’catchclausels)
Addexccptionstomcthodegnature
EADDmethodcontrocttonewConnecbion’
7Annotatemethod’newConnection.m..
抛出这俩异常.
这是因为在Connection里面实现了Closeable接口。
它实现了closeable接口 所以我们就可以用下面这种方法
再把channel建立起来
声明交换机
每两个微服务之间通信使用单独的exchange,这样理解起来和用起来会比较的清晰。
不同交换机之间的特点也会理解的比较清晰。
声明订单微服务和餐厅微服务之间的消息交换的的交换机。
这是exchange的名称。
交换机的类型是direct
autoDelete如果没有队列需要这个交换机,rabbit会自动把它删掉。
最后一个参数是特殊属性,子啊之类我们不需要特殊属性。所以填null就可以了。
声明队列
队列的名称,这个东西是个啥,一定要先写在前面。
参数2 ,是否持久化
这个队列是不是这个Conenction独占的,如果是独占 我们的应用连上后,其他的应用就无法链接了。我们不希望这样。
骑手的交换机和队列声明
复制上面代码,修改了交换机和队列的名称
说明
声明了一个队列,两个交换机。把这个队列用相同的绑定key绑定到了这一个交换机上。这就是两个交换机一个队列。
main方法调试
改成静态方法,
在main方法中直接调用
启动方法测试
多了两个交换机
多了一个队列
点进去队列,队列的绑定
本节搞定了用java声明exchange和queue