## RabbitMQ
* [1.ä»ä¹æ¯RabbitMQï¼ä¸ºä»ä¹ä½¿ç¨RabbitMQï¼](#1ä»ä¹æ¯rabbitmq为ä»ä¹ä½¿ç¨rabbitmq)
* [2.RabbitMQæä»ä¹ä¼ç¼ºç¹ï¼](#2rabbitmqæä»ä¹ä¼ç¼ºç¹)
* [3.ä»ä¹æ¯å
æ°æ®ï¼å
æ°æ®å为åªäºç±»åï¼å
æ¬åªäºå
容ï¼ä¸clusterç¸å
³çå
æ°æ®æåªäºï¼å
æ°æ®æ¯å¦ä½ä¿åçï¼å
æ°æ®å¨cluster䏿¯å¦ä½åå¸çï¼](#3ä»ä¹æ¯å
æ°æ®å
æ°æ®å为åªäºç±»åå
æ¬åªäºå
容ä¸clusterç¸å
³çå
æ°æ®æåªäºå
æ°æ®æ¯å¦ä½ä¿åçå
æ°æ®å¨cluster䏿¯å¦ä½åå¸ç)
* [4.å¨ånodeç³»ç»åå¤nodeææçclusterç³»ç»ä¸å£°æqueueãexchangeï¼ä»¥åè¿è¡binding伿ä»ä¹ä¸åï¼](#4å¨ånodeç³»ç»åå¤nodeææçclusterç³»ç»ä¸å£°æqueueexchange以åè¿è¡binding伿ä»ä¹ä¸å)
* [5.客æ·ç«¯è¿æ¥å°clusterä¸çä»»ænode䏿¯å¦é½è½æ£å¸¸å·¥ä½ï¼](#5客æ·ç«¯è¿æ¥å°clusterä¸çä»»ænode䏿¯å¦é½è½æ£å¸¸å·¥ä½)
* [6.è¥cluster䏿¥ææä¸ªqueueçowner node失æäºï¼ä¸è¯¥queue 被声æå
·ædurable屿§ï¼æ¯å¦è½å¤æåä»å
¶ä»nodeä¸éæ°å£°æè¯¥ queue ï¼](#6è¥cluster䏿¥ææä¸ªqueueçowner-node失æäºä¸è¯¥queue-被声æå
·ædurable屿§æ¯å¦è½å¤æåä»å
¶ä»nodeä¸éæ°å£°æè¯¥-queue-)
* [7.RabbitMQ çæ¶æ¯æ¯æä¹åéçï¼](#7rabbitmq-çæ¶æ¯æ¯æä¹åéç)
* [8.RabbitMQ æä¹é¿å
æ¶æ¯ä¸¢å¤±ï¼](#8rabbitmq-æä¹é¿å
æ¶æ¯ä¸¢å¤±)
* [9.RabbitMQç使ç¨åºæ¯æåªäº?](#9rabbitmqç使ç¨åºæ¯æåªäº)
* [10.RabbitMQæåªäºéè¦çè§è²?](#10rabbitmqæåªäºéè¦çè§è²)
* [11.å¦ä½ç¡®ä¿æ¶æ¯æ£ç¡®å°åéè³RabbitMQ?å¦ä½ç¡®ä¿æ¶æ¯æ¥æ¶æ¹æ¶è´¹äºæ¶æ¯?](#11å¦ä½ç¡®ä¿æ¶æ¯æ£ç¡®å°åéè³rabbitmqå¦ä½ç¡®ä¿æ¶æ¯æ¥æ¶æ¹æ¶è´¹äºæ¶æ¯)
* [12.è¦ä¿è¯æ¶æ¯æä¹
åæåçæ¡ä»¶æåªäº?](#12è¦ä¿è¯æ¶æ¯æä¹
åæåçæ¡ä»¶æåªäº)
* [13.RabbitMQ æå ç§å¹¿æç±»å?](#13rabbitmq-æå ç§å¹¿æç±»å)
* [14.vhost æ¯ä»ä¹ï¼èµ·ä»ä¹ä½ç¨ï¼](#14vhost-æ¯ä»ä¹èµ·ä»ä¹ä½ç¨)
* [15.æ¶æ¯åºäºä»ä¹ä¼ è¾ï¼](#15æ¶æ¯åºäºä»ä¹ä¼ è¾)
* [16.æ¶æ¯å¦ä½ååï¼](#16æ¶æ¯å¦ä½åå)
* [17.æ¶æ¯æä¹è·¯ç±ï¼](#17æ¶æ¯æä¹è·¯ç±)
* [18.å¦ä½ç¡®ä¿æ¶æ¯æ¥æ¶æ¹æ¶è´¹äºæ¶æ¯ï¼](#18å¦ä½ç¡®ä¿æ¶æ¯æ¥æ¶æ¹æ¶è´¹äºæ¶æ¯)
* [19.å¦ä½é¿å
æ¶æ¯é夿éæé夿¶è´¹ï¼](#19å¦ä½é¿å
æ¶æ¯é夿éæé夿¶è´¹)
* [20.æ»ä¿¡éååå»¶è¿éåç使ç¨](#20æ»ä¿¡éååå»¶è¿éåç使ç¨)
* [åè龿¥ï¼](#åè龿¥)
#### 1.ä»ä¹æ¯RabbitMQï¼ä¸ºä»ä¹ä½¿ç¨RabbitMQï¼
RabbitMQæ¯ä¸æ¬¾å¼æºçï¼Erlangç¼åçï¼åºäºAMQPåè®®çï¼æ¶æ¯ä¸é´ä»¶ï¼
å¯ä»¥ç¨å®æ¥ï¼è§£è¦ã弿¥ãåå³°ã
#### 2.RabbitMQæä»ä¹ä¼ç¼ºç¹ï¼
ä¼ç¹ï¼è§£è¦ã弿¥ãåå³°ï¼
缺ç¹ï¼éä½äºç³»ç»çç¨³å®æ§ï¼æ¬æ¥ç³»ç»è¿è¡å¥½å¥½çï¼ç°å¨ä½ éè¦å å
¥ä¸ªæ¶æ¯éåè¿å»ï¼é£æ¶æ¯éåæäºï¼ä½ çç³»ç»ä¸æ¯åµåµäºãå æ¤ï¼ç³»ç»å¯ç¨æ§ä¼éä½ï¼
å¢å äºç³»ç»ç夿æ§ï¼å å
¥äºæ¶æ¯éåï¼è¦å¤èèå¾å¤æ¹é¢çé®é¢ï¼æ¯å¦ï¼ä¸è´æ§é®é¢ãå¦ä½ä¿è¯æ¶æ¯ä¸è¢«é夿¶è´¹ãå¦ä½ä¿è¯æ¶æ¯å¯é æ§ä¼ è¾çãå æ¤ï¼éè¦èèçä¸è¥¿æ´å¤ï¼å¤ææ§å¢å¤§ã
#### 3.ä»ä¹æ¯å
æ°æ®ï¼å
æ°æ®å为åªäºç±»åï¼å
æ¬åªäºå
容ï¼ä¸clusterç¸å
³çå
æ°æ®æåªäºï¼å
æ°æ®æ¯å¦ä½ä¿åçï¼å
æ°æ®å¨cluster䏿¯å¦ä½åå¸çï¼
å¨écluster模å¼ä¸ï¼å
æ°æ®ä¸»è¦å为Queueå
æ°æ®ï¼queueååå屿§ çï¼ãExchangeå
æ°æ®ï¼exchangeååãç±»åå屿§çï¼ãBindingå
æ°æ® ï¼åæ¾è·¯ç±å
³ç³»çæ¥æ¾è¡¨ï¼ãVhostå
æ°æ®ï¼vhostèå´å
é对åä¸è
çåå空 é´çº¦æåå®å
¨å±æ§è®¾ç½®ï¼ã
å¨cluster模å¼ä¸ï¼è¿å
æ¬clusterä¸nodeä½ç½®ä¿¡æ¯ånodeå
³ç³»ä¿¡æ¯ãå
æ°æ®æç
§erlang nodeçç±»åç¡®å®æ¯ä»
ä¿åäºRAMä¸ï¼è¿æ¯åæ¶ä¿åå¨RAMådiskä¸ãå
æ°æ®å¨cluster䏿¯å
¨node åå¸çã
#### 4.å¨ånodeç³»ç»åå¤nodeææçclusterç³»ç»ä¸å£°æqueueãexchangeï¼ä»¥åè¿è¡binding伿ä»ä¹ä¸åï¼
å½ä½ å¨ånodeä¸å£°æqueueæ¶ï¼åªè¦è¯¥nodeä¸ç¸å
³å
æ°æ®è¿è¡äºå æ´ï¼ä½ å°±ä¼å¾å°Queue.Declare-okååºï¼èå¨clusterä¸å£°æqueueï¼åè¦ æ±clusterä¸çå
¨é¨nodeé½è¦è¿è¡å
æ°æ®æåæ´æ°ï¼æä¼å¾å° Queue.Declare-okååºãå¦å¤ï¼è¥nodeç±»å为RAM nodeååæ´çæ°æ® ä»
ä¿åå¨å
åä¸ï¼è¥ç±»å为disk nodeåè¿è¦åæ´ä¿åå¨ç£çä¸çæ°æ®ã
#### 5.客æ·ç«¯è¿æ¥å°clusterä¸çä»»ænode䏿¯å¦é½è½æ£å¸¸å·¥ä½ï¼
æ¯çã客æ·ç«¯æè§ä¸å°æä½ä¸åã
#### 6.è¥cluster䏿¥ææä¸ªqueueçowner node失æäºï¼ä¸è¯¥queue 被声æå
·ædurable屿§ï¼æ¯å¦è½å¤æåä»å
¶ä»nodeä¸éæ°å£°æè¯¥ queue ï¼
ä¸è½ï¼å¨è¿ç§æ
åµä¸ï¼å°å¾å°404 NOT_FOUNDé误ãåªè½çqueueæ å±çnodeæ¢å¤åæè½ä½¿ç¨è¯¥queueãä½è¥è¯¥queueæ¬èº«ä¸å
·ædurable 屿§ï¼åå¯å¨å
¶ä»nodeä¸éæ°å£°æã
#### 7.RabbitMQ çæ¶æ¯æ¯æä¹åéçï¼
é¦å
客æ·ç«¯å¿
é¡»è¿æ¥å° RabbitMQ æå¡å¨æè½åå¸åæ¶è´¹æ¶æ¯ï¼å®¢æ·ç«¯å rabbit server ä¹é´ä¼å建ä¸ä¸ª tcp è¿æ¥ï¼ä¸æ¦ tcp æå¼å¹¶éè¿äºè®¤è¯ï¼è®¤è¯å°±æ¯ä½ åéç» rabbit æå¡å¨çç¨æ·ååå¯ç ï¼ï¼ä½ ç客æ·ç«¯å RabbitMQ å°±å建äºä¸æ¡ amqp ä¿¡éï¼channelï¼ï¼ä¿¡éæ¯å建å¨âçå®â tcp ä¸çèæè¿æ¥ï¼amqp å½ä»¤é½æ¯éè¿ä¿¡éåéåºå»çï¼æ¯ä¸ªä¿¡éé½ä¼æä¸ä¸ªå¯ä¸ç idï¼ä¸è®ºæ¯å叿¶æ¯ï¼è®¢é
éå齿¯éè¿è¿ä¸ªä¿¡é宿çã
#### 8.RabbitMQ æä¹é¿å
æ¶æ¯ä¸¢å¤±ï¼
â æ¶æ¯æä¹
å;
â¡ACK确认æºå¶;
â¢è®¾ç½®é群é忍¡å¼;
â£æ¶æ¯è¡¥å¿æºå¶ã
#### 9.RabbitMQç使ç¨åºæ¯æåªäº?
â 跨系ç»ç弿¥éä¿¡ï¼ææéè¦å¼æ¥äº¤äºçå°æ¹é½å¯ä»¥ä½¿ç¨æ¶æ¯éåãå°±åæä»¬é¤äºæçµè¯(忥)以å¤ï¼è¿éè¦åçä¿¡ï¼åçµåé®ä»¶(弿¥)çé讯æ¹å¼ã
â¡å¤ä¸ªåºç¨ä¹é´çè¦åï¼ç±äºæ¶æ¯æ¯å¹³å°æ å
³åè¯è¨æ å
³çï¼èä¸è¯ä¹ä¸ä¹ä¸åæ¯å½æ°è°ç¨ï¼å æ¤æ´éåä½ä¸ºå¤ä¸ªåºç¨ä¹é´çæ¾è¦åçæ¥å£ãåºäºæ¶æ¯éåçè¦åï¼ä¸éè¦åéæ¹åæ¥æ¶æ¹åæ¶å¨çº¿ãå¨ä¼ä¸åºç¨éæ(EAI)ä¸ï¼æä»¶ä¼ è¾ï¼å
±äº«æ°æ®åºï¼æ¶æ¯éåï¼è¿ç¨è¿ç¨è°ç¨é½å¯ä»¥ä½ä¸ºéæçæ¹æ³ã
â¢åºç¨å
ç忥å弿¥ï¼æ¯å¦è®¢åå¤çï¼å°±å¯ä»¥ç±å端åºç¨å°è®¢åä¿¡æ¯æ¾å°éåï¼å端åºç¨ä»éåé便¬¡è·å¾æ¶æ¯å¤çï¼é«å³°æ¶ç大é订åå¯ä»¥ç§¯åå¨éåéæ
¢æ
¢å¤çæãç±äºåæ¥é常æå³çé»å¡ï¼è大é线ç¨çé»å¡ä¼éä½è®¡ç®æºçæ§è½ã
â£æ¶æ¯é©±å¨çæ¶æ(EDA)ï¼ç³»ç»åè§£ä¸ºæ¶æ¯éåï¼åæ¶æ¯å¶é è
åæ¶æ¯æ¶è´¹è
ï¼ä¸ä¸ªå¤çæµç¨å¯ä»¥æ ¹æ®éè¦ææå¤ä¸ªé¶æ®µ(Stage)ï¼é¶æ®µä¹é´ç¨éåè¿æ¥èµ·æ¥ï¼åä¸ä¸ªé¶æ®µå¤ççç»ææ¾å
¥éåï¼åä¸ä¸ªé¶æ®µä»éåä¸è·åæ¶æ¯ç»§ç»å¤çã
â¤åºç¨éè¦æ´çµæ´»çè¦åæ¹å¼ï¼å¦åå¸è®¢é
ï¼æ¯å¦å¯ä»¥æå®è·¯ç±è§åã
â¥è·¨å±åç½ï¼çè³è·¨åå¸çé讯(CDNè¡ä¸)ï¼æ¯å¦åäº¬æºæ¿ä¸å¹¿å·æºæ¿çåºç¨ç¨åºçéä¿¡ã
#### 10.RabbitMQæåªäºéè¦çè§è²?
RabbitMQä¸éè¦çè§è²æï¼ç产è
ãæ¶è´¹è
å代çï¼
â ç产è
ï¼æ¶æ¯çå建è
ï¼è´è´£åå»ºåæ¨éæ°æ®å°æ¶æ¯æå¡å¨;
â¡æ¶è´¹è
ï¼æ¶æ¯çæ¥æ¶æ¹ï¼ç¨äºå¤çæ°æ®åç¡®è®¤æ¶æ¯;
â¢ä»£çï¼å°±æ¯RabbitMQæ¬èº«ï¼ç¨äºæ®æ¼âå¿«éâçè§è²ï¼æ¬èº«ä¸çäº§æ¶æ¯ï¼åªæ¯æ®æ¼âå¿«éâçè§è²ã
#### 11.å¦ä½ç¡®ä¿æ¶æ¯æ£ç¡®å°åéè³RabbitMQ?å¦ä½ç¡®ä¿æ¶æ¯æ¥æ¶æ¹æ¶è´¹äºæ¶æ¯?
1ãåéæ¹ç¡®è®¤æ¨¡å¼
â å°ä¿¡é设置æconfirm模å¼(åéæ¹ç¡®è®¤æ¨¡å¼)ï¼åææå¨ä¿¡éä¸åå¸çæ¶æ¯é½ä¼è¢«ææ´¾ä¸ä¸ªå¯ä¸çIDã
â¡ä¸æ¦æ¶æ¯è¢«æéå°ç®çéååï¼æè
æ¶æ¯è¢«åå
¥ç£çå(坿ä¹
åçæ¶æ¯)ï¼ä¿¡éä¼åéä¸ä¸ªç¡®è®¤ç»ç产è
(å
嫿¶æ¯å¯ä¸ ID)ã
â¢å¦æRabbitMQåçå
é¨é误ä»èå¯¼è´æ¶æ¯ä¸¢å¤±ï¼ä¼åé䏿¡ nack(notacknowledgedï¼æªç¡®è®¤)æ¶æ¯ã
â£åéæ¹ç¡®è®¤æ¨¡å¼æ¯å¼æ¥çï¼ç产è
åºç¨ç¨åºå¨çå¾
确认çåæ¶ï¼å¯ä»¥ç»§ç»åéæ¶æ¯ãå½ç¡®è®¤æ¶æ¯å°è¾¾ç产è
åºç¨ç¨åºï¼ç产è
åºç¨ç¨åºçåè°æ¹æ³å°±ä¼è¢«è§¦åæ¥å¤çç¡®è®¤æ¶æ¯ã
2ãæ¥æ¶æ¹ç¡®è®¤æºå¶
â æ¶è´¹è
æ¥æ¶æ¯ä¸æ¡æ¶æ¯åé½å¿
é¡»è¿è¡ç¡®è®¤(æ¶æ¯æ¥æ¶åæ¶æ¯ç¡®è®¤æ¯ä¸¤ä¸ªä¸åæä½)ãåªææ¶è´¹è
ç¡®è®¤äºæ¶æ¯ï¼RabbitMQ æè½å®å
¨å°ææ¶æ¯ä»éåä¸å é¤ã
â¡è¿é并没æç¨å°è¶
æ¶æºå¶ï¼RabbitMQä»
éè¿Consumerçè¿æ¥ä¸ææ¥ç¡®è®¤æ¯å¦éè¦éæ°åéæ¶æ¯ãä¹å°±æ¯è¯´ï¼åªè¦è¿æ¥ä¸ä¸æï¼RabbitMQç»äºConsumerè¶³å¤é¿çæ¶é´æ¥å¤çæ¶æ¯ãä¿è¯æ°æ®çæç»ä¸è´æ§ã
3ãä¸é¢ç½åå ç§ç¹æ®æ
åµ
â 妿æ¶è´¹è
æ¥æ¶å°æ¶æ¯ï¼å¨ç¡®è®¤ä¹åæå¼äºè¿æ¥æåæ¶è®¢é
ï¼RabbitMQä¼è®¤ä¸ºæ¶æ¯æ²¡æè¢«ååï¼ç¶åéæ°ååç»ä¸ä¸ä¸ªè®¢é
çæ¶è´¹è
ã(å¯è½å卿¶æ¯é夿¶è´¹ç鿣ï¼éè¦å»é)
â¡å¦ææ¶è´¹è
æ¥æ¶å°æ¶æ¯å´æ²¡æç¡®è®¤æ¶æ¯ï¼è¿æ¥ä¹æªæå¼ï¼åRabbitMQ认为该æ¶è´¹è
ç¹å¿ï¼å°ä¸ä¼ç»è¯¥æ¶è´¹è
ååæ´å¤çæ¶æ¯ã
#### 12.è¦ä¿è¯æ¶æ¯æä¹
åæåçæ¡ä»¶æåªäº?
â 声æéåå¿
须设置æä¹
ådurable设置为 trueã
â¡æ¶æ¯æ¨éæé模å¼å¿
须设置æä¹
åï¼deliveryMode设置为2(æä¹
)ã
â¢æ¶æ¯å·²ç»å°è¾¾æä¹
å交æ¢å¨ã
â£æ¶æ¯å·²ç»å°è¾¾æä¹
åéåã
以ä¸å个æ¡ä»¶é½æ»¡è¶³æè½ä¿è¯æ¶æ¯æä¹
åæåã
#### 13.RabbitMQ æå ç§å¹¿æç±»å?
ä¸ç§å¹¿ææ¨¡å¼ï¼
â fanoutï¼ææbindå°æ¤exchangeçqueueé½å¯ä»¥æ¥æ¶æ¶æ¯(纯广æï¼ç»å®å°RabbitMQçæ¥åè
é½è½æ¶å°æ¶æ¯);
â¡directï¼éè¿routingKeyåexchangeå³å®çé£ä¸ªå¯ä¸çqueueå¯ä»¥æ¥æ¶æ¶æ¯;
â¢topicï¼ææç¬¦åroutingKey(æ¤æ¶å¯ä»¥æ¯ä¸ä¸ªè¡¨è¾¾å¼)çroutingKeyæbindçqueueå¯ä»¥æ¥æ¶æ¶æ¯;
#### 14.vhost æ¯ä»ä¹ï¼èµ·ä»ä¹ä½ç¨ï¼
vhost å¯ä»¥çè§£ä¸ºèæ broker ï¼å³ mini-RabbitMQ serverãå
¶å
é¨å嫿ç¬ç«ç queueãexchange å binding çï¼ä½ææéè¦çæ¯ï¼å
¶æ¥æç¬ç«çæéç³»ç»ï¼å¯ä»¥åå° vhost èå´çç¨æ·æ§å¶ãå½ç¶ï¼ä» RabbitMQ çå
¨å±è§åº¦ï¼vhost å¯ä»¥ä½ä¸ºä¸åæééç¦»çææ®µï¼ä¸ä¸ªå
¸åçä¾åå°±æ¯ä¸åçåºç¨å¯ä»¥è·å¨ä¸åç vhost ä¸ï¼ã
#### 15.æ¶æ¯åºäºä»ä¹ä¼ è¾ï¼
ç±äºTCPè¿æ¥çå建å鿝å¼éè¾å¤§ï¼ä¸å¹¶åæ°åç³»ç»èµæºéå¶ï¼ä¼é ææ§è½ç¶é¢ãRabbitMQ使ç¨ä¿¡éçæ¹å¼æ¥ä¼ è¾æ°æ®ãä¿¡éæ¯å»ºç«å¨çå®çTCPè¿æ¥å
çèæè¿æ¥ï¼ä¸æ¯æ¡TCPè¿æ¥ä¸çä¿¡éæ°éæ²¡æéå¶ã
#### 16.æ¶æ¯å¦ä½ååï¼
è¥è¯¥éåè³å°æä¸ä¸ªæ¶è´¹è
订é
ï¼æ¶æ¯å°ä»¥å¾ªç¯ï¼round-robinï¼çæ¹å¼åéç»æ¶è´¹è
ãæ¯æ¡æ¶æ¯åªä¼ååç»ä¸ä¸ªè®¢é
çæ¶è´¹è
ï¼åææ¯æ¶è´¹è
è½å¤æ£å¸¸å¤çæ¶æ¯å¹¶è¿è¡ç¡®è®¤ï¼ã
#### 17.æ¶æ¯æä¹è·¯ç±ï¼
仿¦å¿µä¸æ¥è¯´ï¼æ¶æ¯è·¯ç±å¿
é¡»æä¸é¨åï¼äº¤æ¢å¨ãè·¯ç±ãç»å®ãç产è
ææ¶æ¯åå¸å°äº¤æ¢å¨ä¸ï¼ç»å®å³å®äºæ¶æ¯å¦ä½ä»è·¯ç±å¨è·¯ç±å°ç¹å®çéåï¼æ¶æ¯æç»å°è¾¾éåï¼å¹¶è¢«æ¶è´¹è
æ¥æ¶ã
æ¶æ¯åå¸å°äº¤æ¢å¨æ¶ï¼æ¶æ¯å°æ¥æä¸ä¸ªè·¯ç±é®ï¼routing keyï¼ï¼å¨æ¶æ¯å建æ¶è®¾å®ã
éè¿éåè·¯ç±é®ï¼å¯ä»¥æéåç»å®å°äº¤æ¢å¨ä¸ã
æ¶æ¯å°è¾¾äº¤æ¢å¨åï¼RabbitMQä¼å°æ¶æ¯çè·¯ç±é®ä¸éåçè·¯ç±é®è¿è¡å¹é
ï¼é对ä¸åç交æ¢å¨æä¸åçè·¯ç±è§åï¼ã妿è½å¤å¹é
å°éåï¼åæ¶æ¯ä¼æéå°ç¸åºéåä¸ï¼å¦æä¸è½å¹é
å°ä»»ä½éåï¼æ¶æ¯å°è¿å
¥ â黿´âã
常ç¨ç交æ¢å¨ä¸»è¦å为ä¸ä¸ä¸ç§ï¼
directï¼å¦æè·¯ç±é®å®å
¨å¹é
ï¼æ¶æ¯å°±è¢«æéå°ç¸åºçéå
fanoutï¼å¦æäº¤æ¢å¨æ¶å°æ¶æ¯ï¼å°ä¼å¹¿æå°ææç»å®çéåä¸
topicï¼å¯ä»¥ä½¿æ¥èªä¸åæºå¤´çæ¶æ¯è½å¤å°è¾¾åä¸ä¸ªéåã 使ç¨topic交æ¢å¨æ¶ï¼å¯ä»¥ä½¿ç¨éé
ç¬¦ï¼æ¯å¦ï¼â*â å¹é
ç¹å®ä½ç½®çä»»æææ¬ï¼ â.â æè·¯ç±é®å为äºå é¨åï¼â#â å¹é
ææè§åçãç¹å«æ³¨æï¼åå¾topic交æ¢å¨çæ¶æ¯ä¸è½éæçè®¾ç½®éæ©é®ï¼routing_keyï¼ï¼å¿
é¡»æ¯ç±"."éå¼çä¸ç³»åçæ è¯ç¬¦ç»æã
#### 18.å¦ä½ç¡®ä¿æ¶æ¯æ¥æ¶æ¹æ¶è´¹äºæ¶æ¯ï¼
æ¥æ¶æ¹æ¶æ¯ç¡®è®¤æºå¶ï¼æ¶è´¹è
æ¥æ¶æ¯ä¸æ¡æ¶æ¯åé½å¿
é¡»è¿è¡ç¡®è®¤ï¼æ¶æ¯æ¥æ¶åæ¶æ¯ç¡®è®¤æ¯ä¸¤ä¸ªä¸åæä½ï¼ãåªææ¶è´¹è
ç¡®è®¤äºæ¶æ¯ï¼RabbitMQæè½å®å
¨å°ææ¶æ¯ä»éåä¸å é¤ãè¿é并没æç¨å°è¶
æ¶æºå¶ï¼RabbitMQä»
éè¿Consumerçè¿æ¥ä¸ææ¥ç¡®è®¤æ¯å¦éè¦éæ°åéæ¶æ¯ãä¹å°±æ¯è¯´ï¼åªè¦è¿æ¥ä¸ä¸æï¼RabbitMQç»äºConsumerè¶³å¤é¿çæ¶é´æ¥å¤çæ¶æ¯ã
ä¸é¢ç½åå ç§ç¹æ®æ
åµï¼
妿æ¶è´¹è
æ¥æ¶å°æ¶æ¯ï¼å¨ç¡®è®¤ä¹åæå¼äºè¿æ¥æåæ¶è®¢é
ï¼RabbitMQä¼è®¤ä¸ºæ¶æ¯æ²¡æè¢«ååï¼ç¶åéæ°ååç»ä¸ä¸ä¸ªè®¢é
çæ¶è´¹è
ãï¼å¯è½å卿¶æ¯é夿¶è´¹ç鿣ï¼éè¦æ ¹æ®bizIdå»éï¼
妿æ¶è´¹è
æ¥æ¶å°æ¶æ¯å´æ²¡æç¡®è®¤æ¶æ¯ï¼è¿æ¥ä¹æªæå¼ï¼åRabbitMQ认为该æ¶è´¹è
ç¹å¿ï¼å°ä¸ä¼ç»è¯¥æ¶è´¹è
ååæ´å¤çæ¶æ¯ã
#### 19.å¦ä½é¿å
æ¶æ¯é夿éæé夿¶è´¹ï¼
卿¶æ¯ç产æ¶ï¼MQå
é¨éå¯¹æ¯æ¡ç产è
åéçæ¶æ¯çæä¸ä¸ªinner-msg-idï¼ä½ä¸ºå»éåå¹çç便®ï¼æ¶æ¯æé失败并éä¼ ï¼ï¼é¿å
éå¤çæ¶æ¯è¿å
¥éåï¼å¨æ¶æ¯æ¶è´¹æ¶ï¼è¦æ±æ¶æ¯ä½ä¸å¿
é¡»è¦æä¸ä¸ªbizIdï¼å¯¹äºåä¸ä¸å¡å
¨å±å¯ä¸ï¼å¦æ¯ä»IDã订åIDãå¸åIDçï¼ä½ä¸ºå»éåå¹çç便®ï¼é¿å
å䏿¡æ¶æ¯è¢«é夿¶è´¹ã
è¿ä¸ªé®é¢é对ä¸å¡åºæ¯æ¥çå以ä¸å ç¹ï¼
1.æ¯å¦ï¼ä½ æ¿å°è¿ä¸ªæ¶æ¯åæ°æ®åºçinsertæä½ãé£å°±å®¹æäºï¼ç»è¿ä¸ªæ¶æ¯åä¸ä¸ªå¯ä¸ä¸»é®ï¼é£ä¹å°±ç®åºç°é夿¶è´¹çæ
åµï¼å°±ä¼å¯¼è´ä¸»é®å²çªï¼é¿å
æ°æ®åºåºç°èæ°æ®ã
2.忝å¦ï¼ä½ æ¿å°è¿ä¸ªæ¶æ¯åredisçsetçæä½ï¼é£å°±å®¹æäºï¼ä¸ç¨è§£å³ï¼å ä¸ºä½ æ 论setå æ¬¡ç»æé½æ¯ä¸æ ·çï¼setæä½æ¬æ¥å°±ç®å¹çæä½ã
3.妿ä¸é¢ä¸¤ç§æ
åµè¿ä¸è¡ï¼ä¸å¤§æãåå¤ä¸ä¸ªç¬¬ä¸æ¹ä»è´¨,æ¥åæ¶è´¹è®°å½ã以redis为ä¾ï¼ç»æ¶æ¯åé
ä¸ä¸ªå
¨å±idï¼åªè¦æ¶è´¹è¿è¯¥æ¶æ¯ï¼å°