互动创意网站哪个网站做物业贷

张小明 2026/3/13 0:30:08
互动创意网站,哪个网站做物业贷,彩票网站html模板,哈尔滨网站备案文章目录前言一、ES与Mysql数据同步1.1.同步调用1.2.异步通知1.3.监听binlog二、实现数据同步2.1 导入依赖和yaml2.2 声明交换机、队列2.3 发送MQ消息2.4 接收MQ消息2.5 测试前言 Mysql数据同步‌ 当数据发生增、删、改时#xff0c;要求对Elasticsearch中数据也要完成相同操…文章目录前言一、ES与Mysql数据同步1.1.同步调用1.2.异步通知1.3.监听binlog二、实现数据同步2.1 导入依赖和yaml2.2 声明交换机、队列2.3 发送MQ消息2.4 接收MQ消息2.5 测试前言Mysql数据同步‌当数据发生增、删、改时要求对Elasticsearch中数据也要完成相同操作。一、ES与Mysql数据同步Elasticsearch中的酒店数据来自于mysql数据库因此Mysql数据发生改变时Elasticsearch也必须跟着改变这个就是Elasticsearch与Mysql之间的数据同步。常见的数据同步方案有三种同步调用异步通知监听binlog方式一同步调用优点实现简单粗暴缺点业务耦合度高方式二异步通知【常用】优点低耦合实现难度一般缺点依赖mq的可靠性方式三监听binlog优点完全解除服务间耦合缺点开启binlog增加数据库负担、实现复杂度高1.1.同步调用方案一同步调用基本步骤如下hotel-demo对外提供接口用来修改Elasticsearch中的数据酒店管理服务在完成数据库操作后直接调用hotel-demo提供的接口1.2.异步通知方案二异步通知流程如下hotel-admin对mysql数据库数据完成增、删、改后发送MQ消息hotel-demo监听MQ接收到消息后完成Elasticsearch数据修改1.3.监听binlog方案三监听binlog流程如下给mysql开启binlog功能mysql完成增、删、改操作都会记录在binlog中hotel-demo基于canal监听binlog变化实时更新Elasticsearch中的内容二、实现数据同步步骤单机部署并启动MQ单机部署在MQ部分有讲接收者中声明exchange、queue、RoutingKey在hotel-admin发送者中的增、删、改业务中完成消息发送在hotel-demo接收者中完成消息监听并更新Elasticsearch中数据启动并测试数据同步功能2.1 导入依赖和yaml对发送者和消费者都添加依赖和yaml信息1引入依赖!--amqp--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-amqp/artifactId/dependency2yamlspring:rabbitmq:#MQ配置host:192.168.194.131# 主机名port:5672# 端口virtual-host:/# 虚拟主机username:itcast# 用户名password:123321# 密码2.2 声明交换机、队列MQ结构如图1声明队列交换机名称在hotel-admin发送者和hotel-demo消费者中的cn.itcast.hotel.constatnts包下新建一个类MqConstantspackagecn.itcast.hotel.constatnts;publicclassMqConstants{/** * 交换机 */publicfinalstaticStringHOTEL_EXCHANGEhotel.topic;/** * 监听新增和修改的队列 */publicfinalstaticStringHOTEL_INSERT_QUEUEhotel.insert.queue;/** * 监听删除的队列 */publicfinalstaticStringHOTEL_DELETE_QUEUEhotel.delete.queue;/** * 新增或修改的RoutingKey */publicfinalstaticStringHOTEL_INSERT_KEYhotel.insert;/** * 删除的RoutingKey */publicfinalstaticStringHOTEL_DELETE_KEYhotel.delete;}2声明队列交换机在hotel-demo消费者中定义配置类声明队列、交换机packagecn.itcast.hotel.config;importcn.itcast.hotel.constants.MqConstants;importorg.springframework.amqp.core.Binding;importorg.springframework.amqp.core.BindingBuilder;importorg.springframework.amqp.core.Queue;importorg.springframework.amqp.core.TopicExchange;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;ConfigurationpublicclassMqConfig{BeanpublicTopicExchangetopicExchange(){returnnewTopicExchange(MqConstants.HOTEL_EXCHANGE,true,false);}BeanpublicQueueinsertQueue(){returnnewQueue(MqConstants.HOTEL_INSERT_QUEUE,true);}BeanpublicQueuedeleteQueue(){returnnewQueue(MqConstants.HOTEL_DELETE_QUEUE,true);}BeanpublicBindinginsertQueueBinding(){returnBindingBuilder.bind(insertQueue()).to(topicExchange()).with(MqConstants.HOTEL_INSERT_KEY);}BeanpublicBindingdeleteQueueBinding(){returnBindingBuilder.bind(deleteQueue()).to(topicExchange()).with(MqConstants.HOTEL_DELETE_KEY);}}2.3 发送MQ消息在hotel-admin发送者中的增、删、改业务中分别发送MQ消息2.4 接收MQ消息hotel-demo接收到MQ消息要做的事情包括新增消息根据传递的hotel的id查询hotel信息然后新增一条数据到索引库删除消息根据传递的hotel的id删除索引库中的一条数据1写SDL业务首先在hotel-demo的cn.itcast.hotel.service包下的IHotelService中新增新增、删除业务voiddeleteById(Longid);voidinsertById(Longid);给hotel-demo中的cn.itcast.hotel.service.impl包下的HotelService中实现业务OverridepublicvoiddeleteById(Longid){try{// 1.准备RequestDeleteRequestrequestnewDeleteRequest(hotel,id.toString());// 2.发送请求client.delete(request,RequestOptions.DEFAULT);}catch(IOExceptione){thrownewRuntimeException(e);}}OverridepublicvoidinsertById(Longid){try{// 0.根据id查询酒店数据HotelhotelgetById(id);// 转换为文档类型HotelDochotelDocnewHotelDoc(hotel);// 1.准备Request对象IndexRequestrequestnewIndexRequest(hotel).id(hotel.getId().toString());// 2.准备Json文档request.source(JSON.toJSONString(hotelDoc),XContentType.JSON);// 3.发送请求client.index(request,RequestOptions.DEFAULT);}catch(IOExceptione){thrownewRuntimeException(e);}}2编写监听器在hotel-demo中的cn.itcast.hotel.mq包新增一个类packagecn.itcast.hotel.mq;importcn.itcast.hotel.constants.MqConstants;importcn.itcast.hotel.service.IHotelService;importorg.springframework.amqp.rabbit.annotation.RabbitListener;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Component;ComponentpublicclassHotelListener{AutowiredprivateIHotelServicehotelService;/** * 监听酒店新增或修改的业务 * param id 酒店id */RabbitListener(queuesMqConstants.HOTEL_INSERT_QUEUE)publicvoidlistenHotelInsertOrUpdate(Longid){hotelService.insertById(id);}/** * 监听酒店删除的业务 * param id 酒店id */RabbitListener(queuesMqConstants.HOTEL_DELETE_QUEUE)publicvoidlistenHotelDelete(Longid){hotelService.deleteById(id);}}2.5 测试用postman调用增加/删除/修改mysql数据库的接口然后去页面搜索看看删除的数据还是否能查到或者修改/增加的数据能不能查出来。本文的引用仅限自我学习如有侵权请联系作者删除。参考知识ElasticSearch (ES从入门到精通一篇就够了)ELK介绍
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

医院网站建设规划wordpress静态化插件

第一章:R Shiny中多模态缓存的核心价值在构建复杂的R Shiny应用时,性能优化成为关键挑战之一。多模态缓存通过整合不同类型的数据缓存策略,显著提升响应速度与资源利用率。它不仅支持静态数据的持久化存储,还能动态管理计算结果、…

张小明 2026/3/5 3:19:51 网站建设

深圳品牌网站推广公司node网站开发需要学什么

01. 为什么要接入 AI 客服? 你是否也有这样的烦恼: 粉丝在后台提问,因为没看到消息错过了最佳回复时间?每天重复回答即使是“你好”、“在吗”、“合作”这类基础问题?想给公众号加点“黑科技”,让粉丝觉得…

张小明 2026/3/5 3:19:51 网站建设

甘肃交通建设监理公司网站菠菜彩票网站怎么建设

如何高效部署CLIP ViT-B/32模型:从零开始的完整实战指南 【免费下载链接】ViT-B-32__openai 项目地址: https://ai.gitcode.com/hf_mirrors/immich-app/ViT-B-32__openai 在当今多模态AI应用蓬勃发展的时代,CLIP ViT-B/32模型凭借其出色的零样本…

张小明 2026/3/5 3:19:53 网站建设

吉林高端网站建设中国人才网登录入口

目录已开发项目效果实现截图开发技术系统开发工具:核心代码参考示例1.建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式&…

张小明 2026/3/5 3:19:54 网站建设

彩票网站开发 晓风如何建设电商网站

全文开始 在Kubernetes上运行数据库、消息队列等有状态应用时,我们总会面临一个灵魂拷问:当Pod在节点间迁移或节点故障时,如何保证数据不丢失,并快速恢复服务? 原生K8s的卷管理提供了基础能力,但在生产环境…

张小明 2026/3/5 3:19:54 网站建设

网站百度屏蔽关键词绍兴网站建设哪家专业

前文分享了几种性能测试中常用到的生成全局唯一标识的案例,虽然在文中我猜测了几种方案设计的性能,并根据自己的经验给出了适用的场景。 但对于一个性能测试工程师来讲,有真是测试数据才更有说服力。这让我想起来之前学过的Java微基准测试框…

张小明 2026/3/5 3:19:57 网站建设