canal同步數(shù)據(jù)索引商品數(shù)據(jù)到ES流程

需求分析

商品上架后助币,將sku列表導(dǎo)入索引庫

實(shí)現(xiàn)思路

1.tb_spu列表發(fā)生改變朦蕴,上架標(biāo)記位由0 → 1 疏尿,拿到該條數(shù)據(jù)的spuId并將該消息發(fā)送到rabbitmq榆鼠。
2.由于商品上架后會(huì)有多個(gè)操作邏輯比如商品信息頁面靜態(tài)化等操作,所以商品上架交換機(jī)使用廣播模式fanout俱笛,建立導(dǎo)入索引庫的隊(duì)列捆姜,并建立交換機(jī)與隊(duì)列之間的綁定關(guān)系。
3.搜索微服務(wù)作為rabbitmq的消費(fèi)者端嫂粟,通過feign遠(yuǎn)程調(diào)用商品微服務(wù),根據(jù)spuId拿到sku列表數(shù)據(jù)后墨缘,通過ElasticSearch的API導(dǎo)入索引庫星虹。

具體實(shí)現(xiàn)過程

1.在canal監(jiān)聽微服務(wù)中:配置一個(gè)tb_spu表的監(jiān)聽類


@CanalEventListener//聲明一個(gè)監(jiān)聽類
public class SpuListener {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    @ListenPoint(schema = "changgou_business",table = "tb_spu",eventType = CanalEntry.EventType.UPDATE)
    public void goods_up(CanalEntry.EventType eventType,CanalEntry.RowData rowData){

    //上架標(biāo)記位由0 → 1 零抬,拿到該條數(shù)據(jù)的spuId并將該消息發(fā)送到rabbitmq
    此處代碼略......
  }

使用rabbitmq發(fā)送消息,最好新建一個(gè)rabbitmqConfig宽涌,用于配置交換機(jī)平夜,隊(duì)列以及綁定關(guān)系。

@Configuration
public  class RabbitmqConfig {

    //定義交換機(jī)名
    public static final String GOODS_UP_EXCHANGE = "goods_up_exchange";

    //定義隊(duì)列名
    public static final String AD_UPDATE_QUEUE = "ad_update_queue";
    public static final String SEARCH_ADD_QUEUE = "search_add_queue";

    @Bean
    public Queue Queue(){
        return new Queue(AD_UPDATE_QUEUE);
    }


    //聲明隊(duì)列
    @Bean(SEARCH_ADD_QUEUE)
    public Queue SEARCH_ADD_QUEUE(){
        return new Queue(SEARCH_ADD_QUEUE);
    }


    //聲明交換機(jī)
    @Bean(GOODS_UP_EXCHANGE)
    public Exchange GOODS_UP_EXCHANGE(){
        return ExchangeBuilder.fanoutExchange(GOODS_UP_EXCHANGE).durable(true).build();
    }


    //隊(duì)列和交換機(jī)綁定
    @Bean
    public 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();
    }



}

2.新建一個(gè)搜索微服務(wù)卸亮,作為消息隊(duì)列的消費(fèi)者端忽妒。通過接受到的消息數(shù)據(jù)spuId,用Feign調(diào)用goods微服務(wù)中的根據(jù)spuId查詢sku列表方法兼贸,拿到數(shù)據(jù)段直。

feign聲明式調(diào)用:在goods_api微服務(wù)中聲明一個(gè)skuFeign接口,并添加通過spuId查詢sku列表的抽象方法。該接口供搜索服務(wù)中使用溶诞。


@FeignClient(name = "goods")
@RequestMapping("/sku")
public interface SkuFeign {


    @GetMapping("/spu/{spuId}")
    List<Sku> findListBySpuId(@PathVariable("spuId") String spuId);


}

3.通過feign遠(yuǎn)程調(diào)用商品微服務(wù)鸯檬,根據(jù)spuId拿到sku列表數(shù)據(jù)后,通過ElasticSearch的API導(dǎo)入索引庫螺垢。
當(dāng)搜索服務(wù)中喧务,用到skuFeign.findListBySpuId()方法時(shí),會(huì)調(diào)用goods服務(wù)里的方法( " /goods/sku/spu/{spuId} " )

業(yè)務(wù)流程圖
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末枉圃,一起剝皮案震驚了整個(gè)濱河市功茴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌孽亲,老刑警劉巖坎穿,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異墨林,居然都是意外死亡赁酝,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門旭等,熙熙樓的掌柜王于貴愁眉苦臉地迎上來酌呆,“玉大人,你說我怎么就攤上這事搔耕∠对” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵弃榨,是天一觀的道長(zhǎng)菩收。 經(jīng)常有香客問我,道長(zhǎng)鲸睛,這世上最難降的妖魔是什么娜饵? 我笑而不...
    開封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮官辈,結(jié)果婚禮上箱舞,老公的妹妹穿的比我還像新娘遍坟。我一直安慰自己,他們只是感情好晴股,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開白布愿伴。 她就那樣靜靜地躺著,像睡著了一般电湘。 火紅的嫁衣襯著肌膚如雪隔节。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天寂呛,我揣著相機(jī)與錄音怎诫,去河邊找鬼。 笑死昧谊,一個(gè)胖子當(dāng)著我的面吹牛刽虹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播呢诬,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼涌哲,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了尚镰?” 一聲冷哼從身側(cè)響起阀圾,我...
    開封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎狗唉,沒想到半個(gè)月后初烘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡分俯,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年肾筐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缸剪。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吗铐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出杏节,到底是詐尸還是另有隱情唬渗,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布奋渔,位于F島的核電站镊逝,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏嫉鲸。R本人自食惡果不足惜撑蒜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧座菠,春花似錦染突、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽也榄。三九已至巡莹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間甜紫,已是汗流浹背降宅。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留囚霸,地道東北人腰根。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像拓型,于是被迫代替她去往敵國(guó)和親额嘿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359