当前位置: 首页 > news >正文

绵阳市住房和城乡建设局网站网站网页是怎么做的

绵阳市住房和城乡建设局网站,网站网页是怎么做的,装修公司谁做网站,北京网站建设公司哪家实惠商品下架索引库删除数据 一、 需求分析和业务逻辑 商品下架后将商品从索引库中移除。 主要应用技术有: 消息队列-RabbitMQ ,分布式搜索引擎-ElasticSearch,Eureka,Canal,Feign远程调用 (1)在…

商品下架索引库删除数据

一、 需求分析和业务逻辑

商品下架后将商品从索引库中移除。

主要应用技术有: 消息队列-RabbitMQ ,分布式搜索引擎-ElasticSearch,Eureka,Canal,Feign远程调用

(1)在数据监控微服务中监控tb_spu表的数据,当tb_spu发生更改且is_marketable为0时,表示商品下架,将spu的id发送到rabbitmq。

(2)在rabbitmq管理后台创建商品下架交换器(fanout)。使用分列模式的交换器是考虑商品下架会有很多种逻辑需要处理,索引库删除数据只是其中一项,另外还有删除商品详细页等操作。

(3)搜索微服务从rabbitmq的的队列中提取spu的id,通过调用elasticsearch的高级restAPI 将相关的sku列表从索引库删除。

在这里插入图片描述

二、 代码实现

商品下架删除ES索引库数据的功能实现:

主要应用技术有: 消息队列-RabbitMQ ,分布式搜索引擎-ElasticSearch,Eureka,Canal,Feign远程调用

2.1 创建交换器与队列

完成商品下架交换器的创建,队列的创建与绑定,将spuId发送消息到mq

商品下架交换器:goods_down_exchange

队列名称: search_delete_queue

绑定 search_delete_queue到goods_down_exchange

@Configuration
public class RabbitMQConfig {//定义交换机名称public static final String GOODS_UP_EXCHANGE="goods_up_exchange";public static final String GOODS_DOWN_EXCHANGE="goods_down_exchange";//定义队列名称public static final String AD_UPDATE_QUEUE="ad_update_queue";public static final String SEARCH_ADD_QUEUE="search_add_queue";public static final String SEARCH_DEL_QUEUE="search_del_queue";//声明队列@Beanpublic Queue queue(){return new Queue(AD_UPDATE_QUEUE);}@Bean(SEARCH_ADD_QUEUE)public Queue SEARCH_ADD_QUEUE(){return new Queue(SEARCH_ADD_QUEUE);}@Bean(SEARCH_DEL_QUEUE)public Queue SEARCH_DEL_QUEUE(){return new Queue(SEARCH_DEL_QUEUE);}//声明交换机@Bean(GOODS_UP_EXCHANGE)public Exchange GOODS_UP_EXCHANGE(){return ExchangeBuilder.fanoutExchange(GOODS_UP_EXCHANGE).durable(true).build();}@Bean(GOODS_DOWN_EXCHANGE)public Exchange GOODS_DOWN_EXCHANGE(){return ExchangeBuilder.fanoutExchange(GOODS_DOWN_EXCHANGE).durable(true).build();}
​
​//队列与交换机的绑定@Beanpublic Binding GOODS_UP_EXCHANGE_BINDING(@Qualifier(SEARCH_ADD_QUEUE)Queue queue,@Qualifier(GOODS_UP_EXCHANGE)Exchange exchange){return BindingBuilder.bind(queue).to(exchange).with("").noargs();}@Beanpublic Binding GOODS_DOWN_EXCHANGE_BINDING(@Qualifier(SEARCH_DEL_QUEUE)Queue queue,@Qualifier(GOODS_DOWN_EXCHANGE)Exchange exchange){return BindingBuilder.bind(queue).to(exchange).with("").noargs();}}

2.2 canal监听下架

修改changgou_canal的SpuListener的spuUpdate方法,添加以下代码

//获取最新下架的商品 1->0
if ("1".equals(oldData.get("is_marketable")) && "0".equals(newData.get("is_marketable"))){//将商品的spuid发送到mqrabbitTemplate.convertAndSend(RabbitMQConfig.GOODS_DOWN_EXCHANGE,"",newData.get("id"));
}

2.3 根据spuId删除索引数据

编写业务逻辑,实现根据spuId删除索引库数据的方法。

(1)ESManagerService新增方法定义

//根据souid删除es索引库中相关的sku数据
void delDataBySpuId(String spuId);

(2)ESManagerServiceImpl实现方法

@Override
public void delDataBySpuId(String spuId) {List<Sku> skuList = skuFeign.findSkuListBySpuId(spuId);if (skuList == null || skuList.size()<=0){throw new RuntimeException("当前没有数据被查询到,无法导入索引库");}for (Sku sku : skuList) {esManagerMapper.deleteById(Long.parseLong(sku.getId()));}
}

2.4 接收mq消息,执行索引库删除

从rabbitmq中提取消息,调动根据spuId删除索引库数据的方法 changgou_service_search新增监听类

@Component
public class GoodsDelListener {@Autowiredprivate ESManagerService esManagerService;@RabbitListener(queues = RabbitMQConfig.SEARCH_DEL_QUEUE)public void receiveMessage(String spuId){System.out.println("删除索引库监听类,接收到的spuId:  "+spuId);//调用业务层完成索引库数据删除esManagerService.delDataBySpuId(spuId);}
}
http://www.yayakq.cn/news/101325/

相关文章:

  • 拼多多网站建设的目的如何在百度发广告
  • 网站开发常用jquery插件山东省威海市文登区建设局网站
  • 昆山建设网站公司2345浏览器在线
  • 建立网站一般包括什么等方式自己建个网站做优化
  • 公司门面网站设计网站下面 备案
  • 门业网站 源码东莞网络营销信息推荐
  • 网站建设术语 英文生活常识网站源码
  • 宁波做网站制作wordpress the_date()
  • 十档行情免费网站太原网页设计公司
  • 如何注册网站名称江苏城乡建设部网站首页
  • 网站开发 项目规划 怎么写wordpress改变文章字体大小
  • 网站线框小程序开发平台哪家好
  • 湖南省建设人力资源网站网站备案代码
  • 巴楚网站建设傻瓜做网站
  • 2018 84号建设厅网站软件开发公司好的有哪些
  • 本地丹阳网站建设深圳网站建设 外包合作
  • 大学生帮别人做网站网站营销的流程
  • 网站建设从入门到精通+网盘企业网站首页设计欣赏
  • 网站空间续费天津海外seo
  • 定制网站制作平台网站域名有什么用
  • 网站服务器用什么好处群辉怎么做网站
  • 郴州网站seo优化汉语言专业简历制作说明
  • 有经验的企业做网站服务器多少钱
  • 高陵县建设局网站品牌建设规划制定及实施情况
  • 做网站链接怎么选择网站模板
  • 中小企业建站可以怎么做网站制作地点
  • 网站建设 图纸网搭建php网站环境
  • 做单页网站需要做什么视觉设计和平面设计的区别
  • 漳州微信网站建设电话建筑公司简介模板免费下载
  • 网站开发通常叫什么部门西地那非片的功能主治说明书