国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Rocketmq優雅停機往事

開發 前端
時間追溯到2018年12月的某一天夜晚,那天我正準備上線一個需求完就回家,剛點下發布按鈕,告警就響起,我擦,難道回不了家了?看著報錯量只有一兩個,斷定只是偶發,穩住不要慌。

[[398013]]

本文轉載自微信公眾號「捉蟲大師」,作者捉蟲大師。轉載本文請聯系捉蟲大師公眾號。

1

時間追溯到2018年12月的某一天夜晚,那天我正準備上線一個需求完就回家,剛點下發布按鈕,告警就響起,我擦,難道回不了家了?看著報錯量只有一兩個,斷定只是偶發,穩住不要慌。

把剩下的機器發完,又出現了幾個同樣的錯誤,作為一名優(咸)秀(魚)程序員,這種問題必須追查到底。

[[398014]]

2

嫻熟地查詢到報錯日志

  1. org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.alibaba.druid.pool.DataSourceClosedException: dataSource already closed 

看著異常信息,陷入了沉思

[[398015]]

表面上看報錯是因為使用了已經關閉的數據源

數據源什么時候會關閉呢?只有進程被殺死的時候

莫非是應用關閉時不夠平滑?發布時會先摘除流量的呀,應該不至于呀

天色已經很晚,漫無目的地拖動日志,疲憊地尋找新線索,突然報錯日志中一個單詞引入眼簾:「rocketmq」

精神抖擻,大概知道原因了,這應用中還有個兢兢業業的rocketmq consumer一直在消費消息,在應用關閉時,外部流量被摘除了,但沒人通知rocketmq consumer,于是它拋異常了。

3

出于我對rocketmq不深刻甚至有點膚淺的理解,它的消費采用ack的方式,如果報錯,消息稍后還會重試,不會丟消息,而且如果消費代碼是冪等的,也不會有業務上的異常,總之這不重要,因為它也不是我寫的代碼。

瞅了一眼consumer的代碼(這里就不貼代碼了,反正貼了你也不會看),consumer注冊了一個ShutdownHook,ShutdownHook里consumer執行了shutdown來優雅地退出,并且給這個shutdownThread設置了最高優先級,然而從實踐看來,這個線程最高優先級并沒有什么卵用。

而且從《ShutdownHook原理》這篇文章中也知道ShutdownHook是并發執行的,spring容器關閉也是一個ShutdownHook,他們之前沒有先后順序。

了解原因后,第一時間想到了類似dubbo摘流的方案,吭哧吭哧寫了個優雅關閉rocketmq cosnumer的接口,在應用關閉腳本的kill之前調用該接口,完美解決問題,趕緊下班回家,不然要猝死了。

4

夜里入睡,夢到老板讓我把所有的系統都改造掉,嚇得我一機靈。

于是第二天又重新思考這個問題,總覺得在應用里實現一個接口并在stop腳本中去調用是一件非常不優雅的事,更重要的是這也沒法復制到其他項目,我又陷入了沉思。

既然是spring容器關閉時bean的銷毀順序導致的問題,那么能不能利用spring的depend-on把順序理順了?說干就干。

起初我遇到是這樣的依賴關系:

手把手在xml的每個bean中把depend-on關系都配上,似乎也起到了作用。

但當我打開第二個項目時,它的bean之間的依賴關系大致如下:

好家伙,26個字母差點不夠用,當時我的心情是這樣的

所以我覺得以當前的速度,改造完所有項目可能都到9102年了。

5

又過了一段時間,在github交友網站上突然看到了rocketmq官方實現的spring-boot-starter,于是點進去看了它的實現。好家伙,看完直呼666。

官方starter實現了spring的SmartLifecycle接口,它的start方法能在所有bean初始化完成后被調用,stop方法會在bean被銷毀前調用,對rocketmq consumer來說簡直完美。

順便還復習了一下spring容器的關閉,代碼在AbstractApplicationContext的doClose方法,這里我總結成一幅圖:

通過上圖能看到,銷毀bean之前,有關閉lifecycle bean和發送ContextClosedEvent兩個動作,官方starter選擇了實現LifeCycle接口的方式。

6

到這里我該給老板匯報去了,之所以rocketmq consumer發布時不平滑是我們的使用姿勢問題,雖然對業務沒影響,但不優雅,解決方案有兩個,老板你選吧:

  • 全都換成官方starter,依賴spring-boot,官方維護,改造成本很高,
  • 監聽ContextClosedEvent來實現優雅關閉,這塊可以封裝一下,讓業務方引入依賴即可

 

責任編輯:武曉燕 來源: 捉蟲大師
相關推薦

2021-04-19 09:37:12

RocketMQ集群版本

2025-07-29 08:25:57

2023-01-30 07:41:43

2024-03-18 14:06:00

停機Spring服務器

2025-03-17 00:00:00

2025-03-11 00:55:00

Spring停機安全

2022-06-08 08:06:05

LinuxJVM內存

2022-07-24 09:46:48

優雅停機代碼

2024-07-22 19:31:34

2018-11-01 13:38:51

Java中斷停止

2020-08-25 10:34:22

微服務微服務架構生產環境

2023-10-20 08:00:55

PodRainbow部署

2022-10-08 09:33:00

平臺中間件

2021-03-26 10:38:32

云計算

2023-11-30 08:08:30

k8s優雅停機

2012-10-08 14:44:10

Windows往事

2018-11-04 08:17:41

2010-08-05 16:42:33

數據中心停機成本

2022-09-08 08:03:30

RocketMQ線程技巧

2019-05-27 08:47:51

點贊
收藏

51CTO技術棧公眾號

gogogo影视剧免费观看在线观看| 国产极品尤物在线| 乡村艳史在线观看| 色先锋资源久久综合| 无码专区aaaaaa免费视频| 中文在线不卡| 成人h片在线播放免费网站| 视频一区国产| 成人在线影视| 自拍偷拍国产精品| 欧美亚洲国产视频小说| 国产精品久久久久久久一区探花| 免费在线观看91| 九七久久人人| 欧美精品一区二区久久| 婷婷久久综合九色国产成人| 国产成人免费在线观看| 欧美日韩不卡在线| 美女黄色片视频| 五月激激激综合网色播| 色婷婷精品久久二区二区蜜臂av| 韩国视频理论视频久久| 99999精品视频| 国产一区二区你懂的| 亚洲线精品一区二区三区| 正在播放欧美视频| 91专区在线观看| 不卡av影片| 欧美精品三级| 日韩亚洲欧美成人一区| 国产成人黄色片| 欧美午夜不卡影院在线观看完整版免费| 日韩精品在线免费| 国产午夜视频| 国产欧美日韩三区| 可以免费观看av毛片| 欧美激情无毛| 三级精品视频久久久久| 日本午夜精品久久久久| 大胆欧美人体视频| 亚洲精品无吗| 亚洲综合色av| 免费在线观看不卡| 裸体大乳女做爰69| 久久一留热品黄| 国产污污在线观看| 91精品在线一区二区| 九色porny自拍视频在线播放| 中文字幕日韩av电影| 日韩成人在线观看视频| 国产日韩中文在线| 人妖欧美一区二区| the porn av| 欧美日韩国产综合一区二区三区| 麻豆视频在线观看免费网站黄| 欧美精品手机在线| 欧美色综合网| 精品成在人线av无码免费看| 亚洲国产精品自拍| 九色porny丨入口在线| 欧美激情一区二区三区成人| 欧美搞黄网站| 精品无码国模私拍视频| 国产精品亚洲产品| 伊人情人网综合| 青青草国产成人av片免费| 91精品在线观看视频| 亚洲欧美另类人妖| 人人网欧美视频| 成人在线看片| 成人高清免费观看| 一级片免费在线| 亚洲老头同性xxxxx| 日韩av资源网| 亚洲一区二区三区四区中文| 亚洲色图视频网站| 爱啪视频在线观看视频免费| 欧美激情亚洲精品| 日韩va亚洲va欧美va久久| 在线观看国产一级片| 欧美日本一区二区三区四区| 亚洲一区二区三区四区电影| 日韩一区免费观看| 亚洲成a人v欧美综合天堂下载| 国产精欧美一区二区三区蓝颜男同| 欧美在线一区二区三区四| 久久久精品午夜少妇| 国产小黄视频| 亚洲精品国产精品久久清纯直播 | 日韩电影一区| 免费极品av一视觉盛宴| 精品久久久久久久久久久久| 中文字幕成人| 日韩亚洲欧美精品| 色8久久精品久久久久久蜜| 一区二区日韩| 制服国产精品| 欧美性猛交xxxx黑人交| 欧美黄色录像| 国产深夜男女无套内射| 精品国产人成亚洲区| 亚洲一区二区三区无吗| 亚洲这里只有精品| 亚洲欧美综合图区| 巨乳诱惑日韩免费av| 精品乱码一区二区三四区视频 | 成人网欧美在线视频| 久久影院视频免费| 国产伦精品一区二区三区视频金莲| 国产伦精品一区二区三区免费视频 | 网址你懂得在线观看| 欧美大胆在线视频| 国产成人福利片| √天堂8资源中文在线| 好吊色欧美一区二区三区视频| 亚洲成年人影院| 神马久久一区二区三区| 免费羞羞视频| 91国产美女在线观看| 99久久精品99国产精品| 精品国产黄a∨片高清在线| 三年中文高清在线观看第6集| 日韩欧美国产一区在线观看| 中文在线一区| 黄网站在线播放| 欧美日韩日本网| 日韩一区二区三区三四区视频在线观看 | 国产精品久久久毛片| 久久精品国产欧美亚洲人人爽| 精品一区二区免费看| 菠萝蜜视频在线观看www入口| 麻豆传媒一区二区| 日韩欧美国产一区二区三区| 久久青草久久| free性欧美| 永久免费看av| 日韩亚洲成人av在线| 91热门视频在线观看| 日本免费一区二区视频| 亚洲三级视频网站| 欧美又大又硬又粗bbbbb| 一区二区三区欧美日| 欧美顶级大胆免费视频| 九色在线播放| 日韩av在线电影观看| 亚洲区免费影片| 久久久久国色av免费看影院| 国产日韩三级| 一级视频在线观看| 久久av一区二区三区漫画| 亚洲高清不卡av| 不卡一二三区首页| 久久久精品国产**网站| 先锋影音欧美性受| 欧美一区国产一区| 99视频免费在线观看| 影音先锋男人的网站| 91精品国产综合久久香蕉的特点| 国产尤物精品| 欧美性受极品xxxx喷水| 亚洲一区色图| 黄色片网站在线| 中文字幕一区二区三区四区五区六区 | 97久久天天综合色天天综合色hd | 五月婷婷丁香综合网| 欧洲精品毛片网站| 欧洲精品在线观看| 日产欧产美韩系列久久99| 欧洲精品久久久久毛片完整版| 免费羞羞视频| 精品国产免费久久久久久尖叫| 日韩精品视频在线观看网址| 久久久久一区二区三区四区| 精品久久影院| 午夜小视频在线观看| 波多野结衣家庭教师视频| 国产欧美一区二区三区四区| 精品国产一区二区三区av性色| 国产肉丝袜一区二区| 91精品国产色综合久久不卡蜜臀 | 亚洲丝袜一区| 9191在线| 久久99精品久久久久子伦 | 欧美人与禽zozo性伦| 人禽交欧美网站| 亚洲码欧美码一区二区三区| 在线国产视频观看| 欧美a级免费视频| 川上优av一区二区线观看| 日韩精品中文字幕有码专区 | 日韩免费电影在线观看| 亚洲色图图片网| 成人午夜免费剧场| 国产美女高潮久久白浆| 亚洲欧美日韩直播| 精品国产福利在线| 老司机精品视频在线观看6| 这里只有精品66| 国产精品揄拍500视频| 日韩最新中文字幕电影免费看|