2.2.2 RabbitMQ消息设计

数据服务需要通过 RabbitMQ将自身的存在通知给所有的接口服务,这样的消息被称为心跳消息,见图2-2 apiServers和 data Servers这两个 exchange需要在 RabbitS服务器上预先创建。每个接口服务节点在启动后都会创建自己的消息队列并绑定至 apiServers exchange每个数据服务节点在启动后每隔5s就会发送一条消息给 apiServers exchange,消息的正文就是该数据服务节点的HTTP监听地址。接口服务节点在收到该消息后就会记录这个地址。 定位时候的流程见图2-3。

每个数据服务节点在启动时都必须创建自己的消息队列并绑定至 data Servers exchange。当接口服务需要定位时,会创建一个临时消息队列,然后发送一条消息给data Servers exchange,消息的正文是需要定位的对象,返回地址则是该临时队列的名字。定位成功的数据服务节点需要将反馈消息发送给这个临时队列,反馈消息的正文是该数据服务节点自身的监听地址。临时消息队列会在一定时间后关闭。如果在关闭前没有收到任何反馈则该对象定位失败,接口服务节点就会知道该对象不存在于数据服务层。