04商品下架 索引庫刪除資料

2021-10-02 16:07:20 字數 3028 閱讀 8768

商品下架後將商品從索引庫中移除。

與商品上架的實現思路非常類似。

(1)在資料監控微服務中監控tb_spu表的資料,當tb_spu發生更改且is_marketable為0時,表示商品下架,將spu的id傳送到rabbitmq。

(2)在rabbitmq管理後台建立商品下架交換器(fanout)。使用分列模式的交換器是考慮商品下架會有很多種邏輯需要處理,索引庫刪除資料只是其中一項,另外還有刪除商品詳細頁等操作。

(3)搜尋微服務從rabbitmq的的佇列中提取spu的id,通過呼叫elasticsearch的高階restapi 將相關的sku列表從索引庫刪除。

4.3.1 建立交換器與佇列

完成商品下架交換器的建立,佇列的建立與繫結,將spuid傳送訊息到mq

商品下架交換器:goods_down_exchange

佇列名稱: search_delete_queue

繫結 search_delete_queue到goods_down_exchange

package com.changgou.search.config;

import org.springframework.amqp.core.*;

import org.springframework.beans.factory.annotation.qualifier;

import org.springframework.context.annotation.bean;

import org.springframework.context.annotation.configuration;

@configuration

public

class

rabbitmqconfig

@bean

(search_add_queue)

public queue search_add_queue()

@bean

(search_del_queue)

public queue search_del_queue()

//宣告交換機

@bean

(goods_up_exchange)

public exchange goods_up_exchange()

@bean

(goods_down_exchange)

public exchange goods_down_exchange()

//佇列與交換機的繫結

@bean

public binding goods_up_exchange_binding

(@qualifier

(search_add_queue)queue queue,

@qualifier

(goods_up_exchange)exchange exchange)

@bean

public binding goods_down_exchange_binding

(@qualifier

(search_del_queue)queue queue,

@qualifier

(goods_down_exchange)exchange exchange)

}

4.3.2 canal監聽下架

修改changgou_canal的spulistener的goodup方法,新增以下**

public

void

goodsup

(canalentry.eventtype eventtype,canalentry.rowdata rowdata)

//獲取最新下架的商品 1->0if(

"1".

equals

(olddata.

get(

"is_marketable"))

&&"0"

.equals

(newdata.

get(

"is_marketable"))

)}

4.3.3 根據spuid刪除索引資料

編寫業務邏輯,實現根據spuid刪除索引庫資料的方法。

(1)esmanagerservice新增方法定義

//根據spuid刪除ess索引庫中相關的sku資料

void

deldatabyspuid

(string spuid)

;

(2)esmanagerserviceimpl實現方法

@override

public

void

deldatabyspuid

(string spuid)

for(sku sku : skulist)

}

4.3.4 接收mq訊息,執行索引庫刪除

從rabbitmq中提取訊息,調動根據spuid刪除索引庫資料的方法 changgou_service_search新增監聽類

package com.changgou.search.listener;

import com.changgou.search.config.rabbitmqconfig;

import com.changgou.search.service.esmanagerservice;

import org.springframework.amqp.rabbit.annotation.rabbitlistener;

import org.springframework.beans.factory.annotation.autowired;

import org.springframework.stereotype.component;

@component

public

class

goodsdellistener

}

mysql 刪除索引 簡書 MySQL刪除資料

mysql刪除資料 1.delete delete from table name a.delete屬於資料庫dml操作語言,只刪除資料不刪除表的結構,會走事務,執行時會觸發trigger b.在 innodb 中,delete其實並不會真的把資料刪除,mysql 實際上只是給刪除的資料打了個標記為...

刪除資料庫使用者

usr bin ksh 1 upload the shell command to the server 2 grant the 777 to the command 3 use method like as follow dropuser.sh username the username as t...

MySQL刪除資料庫

刪除資料庫是指在資料庫系統中刪除已經存在的資料庫。資料庫刪除之後,原來分配的空間將被收回。需要注意的是,資料庫刪除之後該資料庫中所有的表和資料都將被刪除。因此刪除資料庫要特別小心。一 通過sql語句 mysql中,刪除資料庫通過sql語句drop database。其語法格式如下 drop data...