暨是什么意思,{"data":[],"info":{},"message":"success"}

2022-09-04 17:00:45 生活资讯 yemeh

暨是什么意思



本文目录一览:



公文中经常使用很多连词,比如:和、与、或、跟、同、及、以及、及其、暨等,这些连词意思相近,有的可以互换使用;但有的用法上有微妙区别,让人有时不好把握。今天老王就以“和”为参照,来辨析一下这些连词之间的区别。

一、关于“和”。“和”的本义是和谐的意思,读作hé,引申到平和、温和、柔和的意思。“和”是一个多音多义词,其用法和读音有很多,比如:“和”字作为动词,读作huó时,是在粉状物中加液体搅拌的意思;读作huò时,指搅拌、加水搅合的意思,等等。这里重点辨析“和”作为连词时,表示连带、共同一起的意思。

二、“和”跟“与”的区别。“和”跟“与”都表示“平等的联合关系”,但“和”用得更多、更广,“和”可以连接名词,例如“工人和农民”;可以连接动词,例如“传播和接受”;可以连接形容词,例如“聪明和美丽”;还可以连接代词,例如“我和他”。“与”通常只连接名词,例如“小学、中学与大学”。“和”有时还可表示选择,相当于“或”,“与”则没有这样的意思。例如:“去和不去,你自己选择”,这里“和”不能换成“与”。在有几个层次的多项并列成分中,“和”一般用于第一个层次,“与”、“同”、顿号等则表示另一个层次。

三、“和”与“或”的区别。“和”表示并列关系,例如“我要去北京和上海”;“或”表示选择关系,例如“我要去北京或上海”,两者的意思还是比较好区别的。“和”有时也表示选择关系,如前面提到的“去和不去,你自己选择”,但这种情况用得较少。

四、“和”与“跟”的区别。“跟”的本义指脚的后部,即脚后跟。用作连词时与“和”语义相近,可以互换,例如:“我和同学在一起”,“我跟同学在一起”。但“跟”在一定意义上有随着后面的意思,例如:“我跟领导出差”,这里有一个弱层级关系。“跟”多用于口语,“和”在口语和书面语中都用。

五、“和”与“同”的区别。“同”多用于书面语,与“和”表示联合关系有所不同,“同”更多地表示偏正关系,例如:“我和你”,含意是“有你也有我”;“我同你”,含意是“以你为主,我随同”。

六、“和”与“及”、“以及”、“及其”的区别。1.“及”、“以及”也表示并列关系,有划分层次的作用,与“和”不同的是,“及”、“以及”连接的成分有主次先后之分,大多为前主后次。例如:“书本、文具以及其他学习辅助用品要事先准备好”(主次之分),“婴儿、儿童及少年”(先后之分)。2.连接不同类的事物则可不分主次。例如:“钢铁、煤炭的生产,以及营销都要有计划”。3.“及”、“以及”连接的通常是名词,连接三项以上的成分时,“及”通常放在最后一项的前面;“以及”还可连接短句,前面用逗号停顿。例如:“怎样生产,怎样营销,以及怎样做好售后服务应该事先进行周密筹划”。4.“及其”连接的后面和前面是相互关联的,大多有包含关系。例如:“电气工程及其自动化”,“自动化”是附属于“电气工程”的;“电气化工程与自动化”,“自动化”则是表示与“电气化工程”不相关或关联度不大的自动化。

七、关于“暨”。“暨”读作jì ,表示“和”、“及”的意思。“暨”具有浓厚的书面语色彩和庄重典雅的意味,常用于郑重的语用场合,例如会标、请柬、贺函等,运用范围较窄。“暨”与“及”尽管意思相同,但一般不能互换。




360借条二次评估未通过

现在似乎全中国的互联网公司都在做金融。我看不明白。

——周鸿祎


文 / 巴九灵



01.一把水果刀背后的金融梦


1月25日的上午,360成都分公司被一个陌生男人打破了平静。

深陷360借条平台借款纠纷的男人,手持一把水果刀,闯入360办公区。他和一名员工交涉无果后,举起刀子,刺伤了对方的手掌和膝盖。


图源:


伤人者被警方带走,但背后的借贷纠纷也让人好奇,360借条是拉了多大的仇恨?

360借条是360数科旗下个人及小微信贷平台,是近几年最饱受争议的借款平台之一。

在黑猫投诉上,有超过22000条投诉指向360借条。

投诉的主要问题,是*催收和费率畸高。360借条动辄打爆逾期者和其亲友的通讯录,不仅如此,即便借款人提前还款,也需要支付高昂的利息。

小巴在投诉信息里看到,一名用户借款7300元,使用一个月零六天,提前还款,仍需归还8645.36元,和广告上宣称的年化综合息费率7.2%起,相去甚远。


图源:360借条的网页广告


然而,如今360对互联网金融的执着和当年周鸿祎的抵触简直大相径庭。

早在9年前,有人问周鸿祎360要不要搞金融时,他异常激动地反问:

“为什么全中国的互联网公司,现在都奔着金融去呢?为什么不能各自干点有意思的事情?”

当时,互联网巨头都一猛子扎进了金融领域。

2013年,支付宝携手天弘基金,推出了余额宝。

支付宝背靠阿里,有电商平台和信用体系的优势。

2014年,微信的理财通首批接入华夏基金、汇添富基金、易方达基金、广发基金四家基金,宣布正式打造金融开放平台。微信的社交属性保证了稳定的流量,碎片化时间理财更容易让用户接受,这些特质都给金融平台铺了路。

彼时360重心还在安全产品和浏览器上,安全产品手机用户有6.73亿人,360安全浏览器的月活人数是3.57亿人。尽管360产品的渗透率高达94%,但如何吸引用户、评估用户,都还是抽象的想象。

周鸿祎在那段时间拒绝了找上门来的基金公司和银行。

直到一个和360极为相似的影子对手出现,才让他看到了互联网金融与360结合的可行性。

这个影子对手就是和360一起在流氓道路上互殴的2345。


02.难缠的蓝色章鱼


在你安装其他软件“下一步”不小心点快的时候,这两个软件的“全家桶”就会出现在你的电脑上。一个是360的绿图标,一个是打开网页后的蓝章鱼,甩都甩不掉。甚至有人问,2345是不是360旗下的导航?


图源:2345导航截图


它们不仅没有从属关系,而且毫不相关。

2005年,2345网站导航上线,一边通过给网友提供盗版Windows系统,暗中植入导航,一边请超过800万的技术员进行推广,在电脑里预装2345的软件。蓝章鱼的触角不断伸长,迅速成为国内第二大导航。

2006年8月,周鸿祎投资奇虎360科技有限公司,360安全卫士随之面世。

最初十年,双方各显神通,较劲但不打仗。

2345经常篡改安装了360安全卫士电脑的主页,360严防死守的同时,号召网友自发网民公投“恶意软件”。当时是魔高一尺道高一丈,二者互相屏蔽,互相找漏洞,斗智斗勇。

2011年到2014年的三年,2345的网页导航的用户从50万增长到1000万,360安全卫士拥有超过6亿用户。或许是树大招风,2345也眼馋了360的产品。

2345相继推出了2345安全卫士、2345浏览器、2345游戏盒子等等。

这些产品就是360安全卫士、360浏览器、360游戏盒子的纳米级复刻产品。

之后的几年,双方因为侵权问题官司不休,但一个更直观的事实是,二者的业务和收入构成也逐渐趋同了。

转机还要从2345的主动离场说起。表面上看起来它还在和360在产品上缠斗,2018年360才胜了第一场官司。

实际上在2016年,互联网金融就成了2345利润的主要来源。

对于360来说,2345很难缠,但也并非没有一点好处。暗戳戳改道的2345,替360提前蹚了互联网金融的水。


03.相继走上互金路


2014年,2345设立了一家金融科技公司,推出了“随心贷”。

2015年,360金服成立,2016年,360借条上线。

2016年和2017年两年,2345金融借款平台背靠上海银行,一共发放了360亿的贷款,两年的营业收入为22亿元。2017年的金融借款净利同比增长了4469.09%,2345将互联网金融转为主业。搜索引擎+银行的模式走通了。

2345被银行看重的优势是大数据和营销能力,比如“全家桶”能带来360度环绕的弹窗广告,能监测用户的各种行为,这个能力360也有。

尽管没有明确的证据指向360尾随着2345做互联网金融,但是时间点上,360却显示出了亦步亦趋的态势。2345做什么成了,360接下来就甩开膀子开干。

在2345推出随心贷的一年多时间后,周鸿祎跟银行开始了合作,这件事被发现还是在去年5月。

新闻报道一名女士的征信报告中,工作单位一栏中出现“专业做鸡十年”的侮辱性句子。

这家公司叫晋商消费金融股份有限公司,在2016年成立,持股25%的第二大股东是北京奇飞翔艺商务咨询有限公司,法人和董事长都是周鸿祎。

2345的收益证明了互联网金融的可行性,在这几年,360也下了大力气。

在2018年,360金融新增了920万授信用户,净利润同比增加464%。

2345的“引路”在2019年结束了,金融相关的业务关了,债务打包送人了,和互金几乎脱离了关系。

2019年,是互联网金融的严打之年,《关于办理非法放贷刑事责任案件若干问题的意见》下发,贷款产品年利率不得超过36%成为了一道红线。但国家对互联网金融的管控,并不是从2019年才开始的。

2016年,银监会等四部委就发布了关于网络借贷的管理暂行办法,规定了同一借款人在同一平台上的借款上限,在这场风波中,房产贷款和汽车贷款的网贷平台受到了冲击。360此时to C的借款业务才刚刚开始,躲过了一次监管。

2018年,因为P2P的频繁暴雷,互联网企业去金融化浪潮袭来,政府工作报告里出现了21次金融,与之相伴的动词是监管、改革。

互联网金融在监管之下朝着科技企业方向转型,蚂蚁金服变成蚂蚁科技集团,京东金融变成京东数科。

这一年,还叫360金融的360数科发展科技的重点放在了提高获客*度、控制风险逾期率等等,因为风险监管得当,360在这一年获得了20家传统金融机构的信赖。

次次都在监管风暴中脱身的360,变得更加“自信”,这种自信体现在更激进的经营动作上。

2020年6月,360认购了天津金城银行股份有限公司30%的股份,成为银行的第一大股东。在360的流血事件刚发生的这几天,360数科也没受到影响,宣布将继续整合小微相关产品,包括商户贷、发票贷等等业务。但这期间,一个事实上更致命的风险点,却似乎被它刻意忽略——借款人的合法利益保障。

它或许还能在国家对互联网金融的监管之下游刃有余地经营,或许还能受到更多传统金融机构的青睐,但这次流血事件也揭露了另一个真相,如果360借条不能在兼顾借款人利益的情况下转型,那这把水果刀,迟早还要架在脖子上。



① 《2021年中国游戏产业报告》显示,2021年中国移动游戏市场实际销售收入为2255.38亿元,用户规模为6.56亿人,根据这组数据估算,2021年移动游戏用户人均氪金344元。(i黑马)


② 民政部在2022年第一季度的新闻发布会上,公布了低收入人口数据库已建成的消息。目前,全国共认定低保边缘人口431万人、支出型困难人口433万人,连同低保对象、特困人员等低收入人口,形成了包含5800多万人口的低收入人口数据库。数据库能帮助相关部门的工作人员发现需要救助的困难群众,对他们及时进行救助帮扶。(***)



2021年爆款名字:《2021年全国姓名报告》发布,在2021年出生并进行户籍登记的新生儿中,男性新生儿使用频率*的名字是沐宸,女性新生儿使用频率*的名字是若汐。能看出来,十几年前热衷于玛丽苏小说的人当爸妈了。


疫情下的杭州,没有抱怨,没有担忧,居民们反而纷纷晒起了免费隔离物资:羊排、酱鸭、牛奶……社区之间的免费隔离物资已经卷起来了。调侃归调侃,面对疫情有条不紊的背后是杭州一线的抗疫人员付出,他们才是让我们安心的真英雄。






这个冬天,你滑雪了吗?

从地域分布上看,86%的消费者来自一、二线城市,北上广人群是消费主力军。从总体消费水平来看,在马蜂窝预订的冰雪旅游消费中,约四成游客旅行人均花费在5000元以上,其中20%的人消费在万元以上。这说明,滑雪爱好者,舍得为更⾼品质的滑雪体验买单。那么,火热的冰雪运动背后有何机会?晓报告将从五大冰雪消费特点出发,带你看冰雪带来的机会。




本篇

-吴晓波领讲50本商业图书,一起叩开商业大门-




暨是什么意思怎么读

被人读错名字,伤自尊!

读错别人的名字,很尴尬!

然而,你有没有考虑过?

地名也是有尊严的!

TA们,也不想被读错!

我们为大家精心整理了各省、市、区

最容易读错的100多个地名,

看看你以前读错了多少?

北京市

潭柘寺:柘读zhè,寺有一千七百年历史;

爨底下:爨读cuàn,生火做饭之意;

妫水河:妫字音读guī,春秋时有美女息妫;

大栅栏:dà shí lànr,注意儿化音;

演乐胡同:乐在此读yào。

天津市

蓟县:蓟读jì,一种草本植物;

双港:港在这里读jiǎng;

宜兴埠:埠字的标准读音bù,但在这里读fǔ。

河北省

蔚县:蔚读yù,不读wèi;

井陉:陉读xíng,不读jīng;

蠡县:蠡读lǐ,顺便记一下和西施有关的范蠡;

藁城:藁读gǎo,在诗文中“藁砧”指代丈夫;

涿州:涿读为zhuō;

乐亭:lào ting,亭发轻声。

山西省

隰县:隰读xí,《卫风·氓》“隰则有泮”;

洪洞:洞读tóng,例如“苏三离了洪洞县”;

临汾:汾读fén,汾水、汾酒同理;

忻州:忻读xīn。

内蒙古自治区

扎赉诺尔:赉读lài,赐予、赏赐的意思;

巴彦淖尔:彦读yàn,淖应读nào,林妹妹《葬花吟》“强于污淖陷渠沟”;

磴口:磴读dèng。

辽宁省

阜新:阜读fù,易误读为“bù”以及“fǔ”;

桓仁:桓读huán;

岫岩:岫读xiù,此地产玉,名为岫玉。

吉林省

珲春:珲读hún,注意与下文瑷珲的珲区别;

桦甸:桦读huà。

黑龙江省

穆棱:棱是多音字,在此读líng,不读léng;

讷河:讷 读nè;

肇州:肇读zhào,起始之意,金代认为这里是“祖宗肇兴”之地;

瑷珲:读作ài huī,历史书上的“瑷珲条约”在此签订,1956年改名为“爱辉”,2015年恢复为瑷珲。

上海市

莘庄:莘读xīn,不读shēn;山东莘县的莘,读为shēn,不读xīn;

五厍:厍读shè,注意比车库的“库”少一点;

颛桥:颛读zhuān,想想谐音“砖桥”比较好记;

蕰藻浜:蕰读wēn,浜读bāng。

江苏省

盱眙:读xū yí,这里盛产小龙虾;

邗江:邗读hán,京杭运河的一段叫“邗沟”;

邳州:邳读pī;

甪直:甪读lù,注意比“角”少一笔;

栟茶:栟读bēn;

浒墅关:浒读xǔ,不读水浒传的hǔ。

浙江省

丽水:丽读lí,《千字文》“金生丽水”;

台州:太读tāi,天台山的台同理;

嵊州:嵊读shèng;

鄞县:鄞读yín;

诸暨:暨读jì,西施故里。

安徽省

歙县:歙在这里读shè,多音字,还读xī;

六安:六读lù,有一种茶叫“六安瓜片”;

亳州:亳读bó,注意比“毫毛”的“毫”少一笔;

枞阳:枞读zōng,多音字,还读cōng;

黟县:黟,读yī;

濉溪:濉,读suī;

蚌埠: 读音为bèng bù;

砀山:砀读dàng。

福建省

长汀:汀读tīnɡ,例如“汀上白沙看不见”;

琯江:琯读guǎn;

东庠:庠读xiáng,注意偏旁,当地人读xiǎng;

曾厝垵:读音为zēng cuò ān,垵字正规应读三声,但是当地人一般读一声;

筼筜湖:筼筜 yún dāng,是一种竹子,韩愈有诗“筼筜竞长纤纤笋,踯躅闲开艳艳花”。

江西省

铅山:铅读yán,不读qiān,地名专用字音;

钤山:钤读qián;

婺源:婺读wù,旅游胜地读错了买不到票哦;

弋阳:弋读yì;

长堎:堎读lèng,此镇与滕王阁隔江相望。

山东省

莒县:莒读jǔ,不读lǔ;

茌平:茌读chí;

临朐:朐读qú;

郯城:郯读tán;

单县:单读shàn;

曲阜:正确的读音qū fù,孔子故乡;

鄄城:鄄读juān,不读yān;

芝罘:罘读fú,是一种打猎用具,秦始皇曾经在这里立石颂德。

河南省

浚县:浚读xùn,多音字,还读jùn;

武陟:陟读zhì;

泌阳:泌读bì,不读mì;

渑池:渑读miǎn;山东渑水的渑读shéng;

荥阳:荥读xíng,而四川荥经的荥读音yíng;

中牟:牟,读为mù,不读móu。

湖北省

黄陂:陂读pí,多音字,还读bēi以及bō;

郧县:郧读yún;

秭归:秭读zǐ,屈原故里;

监利:监,读jiàn,不读jiān;

猇亭:猇读xiāo;

蕲春:蕲读qí,李时珍故乡。

湖南省

耒阳:耒读lěi;

郴州:郴读chēn,秦观《踏莎行》“郴江幸自绕郴山,为谁流下潇湘去”;

筻口:筻读gàng;

枨冲:枨读chéng。

广东省

东莞:莞读guǎn;

番禺:番读pān;

沥滘:滘读jiào;

巽寮湾:巽读xùn,八卦之一;

硇洲岛:硇读náo,有种矿物叫“硇砂”。

广西壮族自治区

吴圩:圩读xū ,也许你去过南宁吴圩机场;

百色:百按古音读bó。

海南省

儋州:儋读dān,苏轼曾经的贬谪地,《自题金山画像》“问汝平生功业,黄州惠州儋州”。

重庆市

涪陵:涪读fú,涪陵榨菜的故乡;

綦江:綦读qí,青黑色的意思,《郑风·出其东门》“缟衣綦巾”;

北碚:碚读bèi。

四川省

郫县:郫读pí,郫县豆瓣是川菜的灵魂之一;

珙县:珙读gǒng;

犍为:犍读qián,犍牛的犍读jiān;

邛崃:qióng lái,卓文君的故乡;

筠连:筠读jūn,不读yún;

阆中:阆,读làng。

贵州省

永燊:燊读shēn;

岜沙:岜读biā,普通话里没有这个读音,但就像biangbiang面一样,入乡随俗(字典读bā);

大磏:磏读qiān;

浞水:浞读zhuó。

云南省

勐海:勐读měng,傣族语音译字;

禄脿:脿读piǎo;

漾濞:濞读bì,此地盛产核桃;

者竜:竜读lóng。

西藏自治区

那曲:正确读法是nā qū;

噶尔:噶读gá。

陕西省

洽川:洽读hé;

栎阳:栎读yuè,不读lè;

柞水:柞读zhà;

吴堡:堡,读bǔ;

虢镇:虢读guó,历史地名专用,杨贵妃有个姐姐被封为“虢国夫人”。

甘肃省

崆峒:正确读法是kōng tóng,喜欢看武侠小说的话应该不会读错;

颉崖:颉读xié;

垲坪:垲读kǎi;

枹罕:枹读fú,鼓槌的意思;

吴砦:砦读zhài,王维诗《鹿砦》。

青海省

茶卡盐湖:卡读qiǎ,这里被称为“天空之镜”;

窎沟:窎读diào。

宁夏回族自治区

潘昶:昶读chǎng。

新疆维吾尔自治区

巴音郭楞:楞读léng,不读lèng;

焉耆:耆读qí。

香港特别行政区

寨乪村:乪读náng;

坪輋:輋读shē;

红磡:磡读kàn, 红磡体育馆简称红馆;

作壆坑:壆读bó。

***特别行政区

凼仔岛:凼读dàng,当地一般写作异体字“氹”。

怎么样?你读对了多少呢?

诗词世界

【声明:本号为“全民阅读推广”官方公益账号,转载此文是出于传递更多信息之目的。若有来源标注错误或涉嫌侵犯您的合法权益,请联系我们。我们将及时更正、删除,谢谢。】




{"data":[],"info":{},"message":"success"}

前言

上一章讲解了RabbitMq的三种Exchange消息发送的模式,但是在默认情况下RabbitMQ并不能保证消息是否发送成功,以及是否能被成功消费,为了保证消息在传递过程中不丢失,需要对消息进行确认机制,来提高消息的可靠性。

消息确认

基本流程

说明:

生产者发送消息到RabbitMQ Server后,RabbitMQ Server需要对生产者进行消息Confirm确认。消费者消费消息后需要对 RabbitMQ Server进行消息ACK确认。

消息确认模式

RabbitMq提供了两种消息发送者确认模式分别为: ConfirmCallback确认模式和 ReturnCallback退回模式。

ConfirmCallback确认模式

@Componentpublic class RabbitConfirmConfig implements ConfirmCallback{ private Logger logger = LoggerFactory.getLogger(RabbitConfirmConfig.class); public void confirm(CorrelationData correlationData, boolean ack, String cause) { logger.info("数据内容:{}",correlationData); logger.info("是否确认成功:{}",ack); logger.info("错误原因:{}",cause); if (!ack) { logger.info("exchange produce confirm message send error" + cause); } else { logger.info("exchange produce confirm message send success"); } }}复制代码

说明:ConfirmCallback模式确认,需要重写confirm接方法,此方法的三个参数分别为:CorrelationData、ack、cause

CorrelationData:对象内部只有一个id属性,用来表示当前消息的*性。ack:消息投递状态,true表示投递成功cause: 消息投递失败原因

虽然消息被broker接收到只能表示已经到达MQ服务器,但是并不能保证消息一定会被投递到目标 queue里。所以我们需要实现returnCallback来进行相关处理。

ReturnCallback退回模式

@Componentpublic class RabbitReturnConfig implements ReturnCallback{ private Logger logger = LoggerFactory.getLogger(RabbitReturnConfig.class); public void returnedMessage(Message message, int replyCode, String replyText, String exchange, String routingKey) { logger.info("消息发送送到队列信息:"); logger.info("发生消息:{}",message); logger.info("回应码:{}",replyCode); logger.info("回应信息:{}",replyText); logger.info("交换机:{}",exchange); logger.info("路由键:{}",routingKey); }}复制代码

说明:实现接口ReturnCallback重写returnedMessage()方法,方法有五个参数message(消息体)、replyCode(响应code)、replyText(响应内容)、exchange(交换机)、routingKey(路由键)。

消息发送者确认

@Componentpublic class MqConfirmProduce{ @Autowired private RabbitTemplate rabbitTemplate; @Autowired private RabbitConfirmConfig rabbitConfirmConfig; @Autowired private RabbitReturnConfig rabbitReturnConfig; /** * * @param exchange 消息交互机名称 * @param routeKey 消息路由键的名称 * @param message 消息内容 */ public void sendMessage(String exchange ,String routeKey,Object msg) { //确保消息发送失败后可以重新返回到队列中 rabbitTemplate.setMandatory(true); // 消费者确认收到消息后,手动ack回执回调处理 rabbitTemplate.setConfirmCallback(rabbitConfirmConfig); //消息投递到队列失败回调处理 rabbitTemplate.setReturnCallback(rabbitReturnConfig); //保证消息*性 CorrelationData correlationData =new CorrelationData(UUID.randomUUID().toString()); //发送消息 rabbitTemplate.convertAndSend(exchange,routeKey,msg, message -> { message.getMessageProperties().setDeliveryMode(MessageDeliveryMode.PERSISTENT); return message; }, correlationData); }}复制代码

说明:注意需要开启消息确认的配置:

rabbitmq: host: localhost port: 5672 username: guest password: guest virtual-host: / #开启发送确认 publisher-confirms: true # 开启发送失败退回 publisher-returns: true listener: simple: # 手动确认 acknowledge-mode: manual retry: enabled: true

消息接收者确认

@Component@RabbitListener(queues = "testQueue")public class MqConfirmConsumer{ private static final Logger logger = LoggerFactory.getLogger(MqConfirmConsumer.class); @RabbitHandler public void receive(String msg, Channel channel, Message message) throws IOException { logger.info("receive message content:{}",message); try { logger.info("开始消息确认"); channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); logger.info("消息确认成功"); } catch (Exception e) { logger.error("消息确认失败,即将再次返回队列中"); channel.basicNack(message.getMessageProperties().getDeliveryTag(), true, true); } }}

说明:消息者确认消息有三种模式,分别为basicAck、basicNack、basicReject。

basicAck模式

表示成功确认,使用此回执方法后,消息会被rabbitmq broker删除。

void basicAck(long deliveryTag, boolean multiple) 复制代码deliveryTag:消息投递序号,multiple:是否批量确认,值为 true则会一次性ack所有小于当前消息deliveryTag的消息。

basicNack模式

表示失败确认,一般在消费消息异常时用到此方法,可以将消息重新投递入队列。

void basicNack(long deliveryTag, boolean multiple, boolean requeue)复制代码deliveryTag:表示消息投递序号。requeue: 表示消息是否重新入队列,true表示重新投入队列中。multiple:是否批量确认,true表示会一次性ack所有小于当前消息deliveryTag的消息。

basicReject模式

basicReject:拒绝消息,与basicNack区别在于不能进行批量操作,其他用法很相似。

void basicReject(long deliveryTag, boolean requeue)复制代码deliveryTag:消息投递序号。requeue:值为true表示消息重新入队列

测试

测试发送消息,消息发送者的确认信息

c.s.f.r.config.RabbitConfirmConfig - exchange produce confirm message send successc.s.f.r.config.RabbitConfirmConfig - 数据内容:CorrelationData [id=88ea47a5-726d-44c5-9839-1f2a6bf942ed]c.s.f.r.config.RabbitConfirmConfig - 是否确认成功:truec.s.f.r.config.RabbitConfirmConfig - 错误原因:nullc.s.f.r.config.RabbitConfirmConfig - exchange produce confirm message send success复制代码

消费者的确认信息

receive message content:(Body:'this is test message' MessageProperties [headers={spring_listener_return_correlation=0fcefb6d-acea-4eb2-8484-e3a82f8c584f, spring_returned_message_correlation=88ea47a5-726d-44c5-9839-1f2a6bf942ed}, contentType=text/plain, contentEncoding=UTF-8, contentLength=0, receivedDeliveryMode=PERSISTENT, priority=0, redelivered=false, receivedExchange=testDirect, receivedRoutingKey=testDirectRouting, deliveryTag=2, consumerTag=amq.ctag-dOwkSPuI1e0HR_1Ufu3Erw, consumerQueue=testQueue]) c.s.f.r.consumer.MqConfirmConsumer - 开始消息确认c.s.f.r.consumer.MqConfirmConsumer - 消息确认成功复制代码

消费者确认失败

如果消息确认在消费者确认失败,那么消息将会重写投递导导消息队列的首部。模拟消费者确认失败场景:

@Component@RabbitListener(queues = "testQueue")public class MqConfirmConsumer{ private static final Logger logger = LoggerFactory.getLogger(MqConfirmConsumer.class); @RabbitHandler public void receive(String msg, Channel channel, Message message) throws IOException { logger.info("receive message content:{}",message); try { logger.info("开始消息确认"); int c=1/0; channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); logger.info("消息确认成功"); } catch (Exception e) { logger.error("消息确认失败,即将再次返回队列中"); channel.basicNack(message.getMessageProperties().getDeliveryTag(), true, true); } }}复制代码

查看执行结果:

c.s.f.r.consumer.MqConfirmConsumer - receive message content:(Body:'this is test message' MessageProperties [headers={spring_listener_return_correlation=0fcefb6d-acea-4eb2-8484-e3a82f8c584f, spring_returned_message_correlation=39d4cdd1-cbeb-4090-91ea-9e5d0bed785c}, contentType=text/plain, contentEncoding=UTF-8, contentLength=0, receivedDeliveryMode=PERSISTENT, priority=0, redelivered=false, receivedExchange=testDirect, receivedRoutingKey=testDirectRouting, deliveryTag=1, consumerTag=amq.ctag-e5GtG455pkm7eWfY3xGleg, consumerQueue=testQueue])c.s.f.r.consumer.MqConfirmConsumer - 开始消息确认c.s.f.r.consumer.MqConfirmConsumer - 消息确认失败,即将再次返回队列中复制代码

消息已经重新返回队列中。我们查看队列信息具体

说明:我们可以看到消息为Unacked状态,消息又会重新会被消费,然后确认失败,又重新被消费,导致死循环。

解决办法

针对这种情况,我们将如何处理呢?我们手动确认失败后,并将消息持久入到MySQL中通过定时任务做补偿。然后删除消息队列。具体修改

@RabbitHandler public void receive(String msg, Channel channel, Message message) throws IOException { logger.info("receive message content:{}",message); try { logger.info("开始消息确认"); int c=1/0; channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); logger.info("消息确认成功"); } catch (Exception e) { if (message.getMessageProperties().getRedelivered()) { logger.error("消息确认失败,拒绝处理"); //执行持久化处理 channel.basicReject(message.getMessageProperties().getDeliveryTag(), false); } else { logger.error("消息确认失败,即将再次返回队列中"); channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true); } } }复制代码

修改后执行结果

总结

本文讲解了RabbitMQ消息确认机制,消息是否需要确认,我们需要根据业务的场景来分析,如有疑问,请随时反馈。



今天的内容先分享到这里了,读完本文《暨是什么意思》之后,是否是您想找的答案呢?想要了解更多暨是什么意思、360借条二次评估未通过相关的体育资讯请继续关注本站,是给小编*的鼓励。

免责声明
           本站所有信息均来自互联网搜集
1.与产品相关信息的真实性准确性均由发布单位及个人负责,
2.拒绝任何人以任何形式在本站发表与中华人民共和国法律相抵触的言论
3.请大家仔细辨认!并不代表本站观点,本站对此不承担任何相关法律责任!
4.如果发现本网站有任何文章侵犯你的权益,请立刻联系本站站长[QQ:775191930],通知给予删除