1、需求分析
我们知道es中的数据来自于mysql数据库,因此mysql数据发生改变时,es也必须跟着改变,否则会导致数据不一致问题,这个就是elasticsearch与mysql之间的数据同步。
如何实现数据同步:
方案一:同步调用
缺点:
得按顺序实行图中的三步,依次执行,容易引起数据耦合;
原来只是hotel-admin的业务只是写数据库写完就结束,现在还得在写数据库代码的后面加上调用hotel-demo的代码,hotel-admin和hotel-demo下的两个业务发生业务耦合;
影响性能,而且一个业务出错整个流程都会收到影响。
方案二:
利用消息队列MQ实现 hotel-admin和hotel-demo的业务解耦,但是会依赖MQ的可靠性,而且复杂度会相应的上升一点。
在hotel-admin和hotel-demo中都得声明交换机和监听队列:
public class MqConstants {
/**
* 声明交换机名称
*/
public final static String HOTEL_EXCHA