±à¼ÍƼö: |
±¾ÎĽ²ÊöÍêÕûµÄÆóÒµ¼Ü¹¹£¬Zachman
Ä£ÐÍ£¬TOGAF ÏêϸµÄ¼Ü¹¹¹¤¼þÄ£ÐÍ£¬DODAF£¨ÃÀ¹ú¹ú·À²¿Ìåϵ¼Ü¹¹¿ò¼Ü£©£¬Ï£Íû¶ÔÄúÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚ²©¿ÍÔ°£¬ÓÉ»ðÁú¹ûÈí¼þDelores±à¼¡¢ÍƼö¡£ |
|
¡°ÎÒÃÇ´ó¼Ò¶¼ÖªµÀ°ÑÒ»¸ö΢·þÎñ¼Ü¹¹±ä³ÉÒ»¸öÒì²½¼Ü¹¹Ö»ÐèÒª¼ÓÒ»¸öMQ£¬ÏÖÔÚÊÐÃæÉÏÓкܶàMQµÄ¿ªÔ´¿ò¼Ü¡£µ½µ×Ñ¡ÔñÄÄÒ»¸öMQµÄ¿ªÔ´¿ò¼Ü²ÅºÏÊÊÄØ ¡±
Ò»¡¢Ê²Ã´ÊÇMQ£¿MQµÄÔÀíÊÇʲô£¿
MQ¾ÍÊÇÏûÏ¢¶ÓÁУ¬ÊÇMessage QueueµÄËõд¡£ÏûÏ¢¶ÓÁÐÊÇÒ»ÖÖͨÐÅ·½Ê½¡£ÏûÏ¢µÄ±¾ÖʾÍÊÇÒ»ÖÖÊý¾Ý½á¹¹¡£ÒòΪMQ°ÑÏîÄ¿ÖеÄÏûÏ¢¼¯ÖÐʽµÄ´¦ÀíºÍ´æ´¢£¬ËùÒÔMQÖ÷ÒªÓнâñ²¢·¢£¬ºÍÏ÷·åµÄ¹¦ÄÜ¡£
1£¬½âñ
MQµÄÏûÏ¢Éú²úÕߺÍÏû·ÑÕß»¥Ï಻¹ØÐĶԷ½ÊÇ·ñ´æÔÚ£¬Í¨¹ýMQÕâ¸öÖмä¼þµÄ´æÔÚ£¬Ê¹Õû¸öϵͳ´ïµ½½âñîµÄ×÷Óá£
Èç¹û·þÎñÖ®¼äÓÃRPCͨÐÅ£¬µ±Ò»¸ö·þÎñ¸ú¼¸°Ù¸ö·þÎñͨÐÅʱ£¬Èç¹ûÄǸö·þÎñµÄͨÐŽӿڸı䣬ÄÇô¼¸°Ù¸ö·þÎñµÄͨÐŽӿڶ¼µÄ¸ú×ű䶯£¬ÕâÊǷdz£Í·ÌÛµÄÒ»¼þÊ¡£
µ«ÊDzÉÓÃMQÖ®ºó£¬²»¹ÜÊÇÉú²úÕß»òÕßÏû·ÑÕß¶¼¿ÉÒÔµ¥¶À¸Ä±ä×Ô¼º¡£ËûÃǵĸı䲻»áÓ°Ïìµ½±ðµÄ·þÎñ¡£´Ó¶ø´ïµ½½âñîµÄÄ¿µÄ¡£ÎªÊ²Ã´Òª½âñîÄØ£¿Ëµ°×Á˾ÍÊÇ·½±ã£¬¼õÉÙ²»±ØÒªµÄ¹¤×÷Á¿¡£
2£¬²¢·¢
MQÓÐÉú²úÕß¼¯ÈººÍÏû·ÑÕß¼¯Èº£¬ËùÒÔ¿Í»§¶ËÊÇÒÚ¼¶Óû§Ê±£¬ËûÃǶ¼ÊDz¢Ðеġ£´Ó¶ø´ó´óÌáÉýÏìÓ¦ËÙ¶È¡£
3£¬Ï÷·å
ÒòΪMQÄÜ´æ´¢µÄÏûÏ¢Á¿ºÜ´ó£¬ËùÒÔËû¿ÉÒÔ°Ñ´óÁ¿µÄÏûÏ¢ÇëÇóÏÈ´æÏÂÁË£¬È»ºóÔÙ²¢·¢µÄ·½Ê½ÂýÂý´¦Àí¡£
Èç¹û²ÉÓÃRPCͨÐÅ£¬Ã¿Ò»´ÎÇëÇóÓõ÷ÓÃRPC½Ó¿Ú£¬µ±ÇëÇóÁ¿¾Þ´óµÄʱºò£¬ÒòΪRPCµÄÇëÇóÊǺܺÄ×ÊÔ´µÄ£¬ËùÒÔ¾Þ´óµÄÇëÇóÒ»¶¨»áѹ¿å·þÎñÆ÷¡£
Ï÷·åµÄÄ¿µÄÊÇÓû§ÌåÑé±äºÃ£¬²¢ÇÒʹÕû¸öϵͳÎȶ¨¡£ÄܳÐÊÜ´óÁ¿ÇëÇóÏûÏ¢¡£
¶þ¡¢ÏÖÔÚÊÐÃæÉÏÓÐʲôMQ
ÖØµã½éÉÜRocketMQ
ÏÖÔÚÊÐÃæÉϵÄMQÓкܶ࣬Ö÷ÒªÓÐRabbitMQ£¬ActiveMQ£¬ZeroMQ£¬RocketMQ£¬KafkaµÈµÈ£¬ÕâЩ¶¼ÊÇ¿ªÔ´µÄMQ²úÆ·¡£ÒÔǰºÜ¶àÈËÍÆ¼öʹÓÃRabbitMQ£¬ËûÒ²ÊǷdz£ºÃÓõÄMQ²úÆ·£¬ÕâÀï²»×ö¹ý¶àµÄ½éÉÜ¡£KafkaÒ²ÊǸßÍÌÍÂÁ¿µÄÀÏ´ó£¬ÎÒÃÇÕâÀïÒ²²»½éÉÜ¡£
ÎÒÃÇÖØµã½éÉÜÒ»ÏÂRocketMQ£¬RocketMQÊǰ¢Àï°Í°ÍÔÚ2012Ä꿪ԴµÄ·Ö²¼Ê½ÏûÏ¢Öмä¼þ£¬Ä¿Ç°ÒѾ¾èÔù¸øApacheÈí¼þ»ù½ð»á£¬²¢ÓÚ²¢ÓÚ2017Äê9ÔÂ25ÈÕ³ÉΪ Apache µÄ¶¥¼¶ÏîÄ¿¡£
×÷Ϊ¾Àú¹ý¶à´Î°¢Àï°Í°Í˫ʮһÕâÖÖ¡°³¬¼¶¹¤³Ì¡±µÄÏ´Àñ²¢ÓÐÎȶ¨³öÉ«±íÏֵĹú²úÖмä¼þ£¬ÒÔÆä¸ßÐÔÄÜ¡¢µÍÑÓʱºÍ¸ß¿É¿¿µÈÌØÐÔ½üÄêÀ´ÒѾҲ±»Ô½À´Ô½¶àµÄ¹úÄÚÆóҵʹÓá£
¹¦ÄܸÅÀÀͼ

¿ÉÒÔ¿´¼ûRocketMQÖ§³Ö¶¨Ê±ºÍÑÓʱÏûÏ¢£¬ÕâÊÇRabbitMQËùûÓеÄÄÜÁ¦¡£
RocketMQµÄÎïÀí½á¹¹

´ÓÕâÀï¿ÉÒÔ¿´³ö£¬RocketMQÉæ¼°µ½ËÄ´ó¼¯Èº£¬producer£¬Name Server£¬Consumer£¬Broker¡£
Producer¼¯Èº£º
ÊÇÉú²úÕß¼¯Èº£¬¸ºÔð²úÉúÏûÏ¢£¬ÏòÏû·ÑÕß·¢ËÍÓÉÒµÎñÓ¦ÓóÌÐòϵͳÉú³ÉµÄÏûÏ¢£¬RocketMQÌṩÈýÖÖ·½Ê½·¢ËÍÏûÏ¢£ºÍ¬²½£¬Òì²½£¬µ¥Ïò¡£
Ò»£¬ÆÕͨÏûÏ¢
1£¬Í¬²½ÔÀíͼ

ͬ²½ÏûÏ¢¹Ø¼ü´úÂë
try { SendResult
sendResult = producer.send(msg); // ͬ²½·¢ËÍÏûÏ¢£¬ Ö»Òª²»Å×Òì³£¾ÍÊdzɹ¦
if (sendResult != null) { System.out.println (new
Date() + " Send mq message success. Topic
is:" + msg.getTopic() + " msgId is:
" + sendResult.getMessageId()); } catch
(Exception e) { System.out.println (new Date()
+ " Send mq message failed. Topic is:"
+ msg.getTopic()); e.printStackTrace(); }} |
2£¬Òì²½ÔÀíͼ

Òì²½ÏûÏ¢¹Ø¼ü´úÂë
producer.sendAsync(msg,
new SendCallback() { @Overridepublic void onSuccess (final
SendResult sendResult) { // Ïû·Ñ·¢Ëͳɹ¦ System.out.println ("send
message success. topic=" + sendResult.getTopic()
+ ", msgId=" + sendResult.getMessageId());
} @Overridepublic void onException (OnExceptionContext
context) { System.out.println("send message
failed. topic=" + context.getTopic() + ",
msgId=" + context.getMessageId()); }}); |
3£¬µ¥Ïò£¨Oneway£©·¢ËÍÔÀíͼ

µ¥ÏòÖ»·¢ËÍ£¬²»µÈ´ý·µ»Ø£¬ËùÒÔËÙ¶È×î¿ì£¬Ò»°ãÔÚ΢Ãë¼¶£¬µ«¿ÉÄܶªÊ§
µ¥Ïò£¨Oneway£©·¢ËÍÏûÏ¢¹Ø¼ü´úÂë
producer.sendOneway(msg); |
¶þ£¬¶¨Ê±ÏûÏ¢ºÍÑÓʱÏûÏ¢
·¢ËͶ¨Ê±ÏûÏ¢¹Ø¼ü´úÂë
try { // ¶¨Ê±ÏûÏ¢£¬µ¥Î»ºÁÃ루ms£©£¬ ÔÚÖ¸¶¨Ê±¼ä´Á£¨µ±Ç°Ê±¼äÖ®ºó£©½øÐÐͶµÝ£¬ ÀýÈç
2016-03-07 16:21:00 ͶµÝ¡£ Èç¹û±»ÉèÖóɵ±Ç°Ê±¼ä´Á֮ǰµÄij¸öʱ¿Ì£¬ ÏûÏ¢½«Á¢¿ÌͶµÝ¸øÏû·ÑÕß¡£
long timeStamp = new SimpleDateFormat("yyyy-MM-dd
HH:mm:ss") .parse("2016-03-07 16:21:00").getTime();
msg.setStartDeliverTime(timeStamp); // ·¢ËÍÏûÏ¢£¬Ö»Òª²»Å×Òì³£¾ÍÊdzɹ¦
SendResult sendResult = producer.send(msg); System.out.println ("MessageId:"+sendResult.getMessageId()); }catch
(Exception e) { // ÏûÏ¢·¢ËÍʧ°Ü£¬ ÐèÒª½øÐÐÖØÊÔ´¦Àí£¬¿ÉÖØÐ·¢ËÍÕâÌõÏûÏ¢ »ò³Ö¾Ã»¯ÕâÌõÊý¾Ý½øÐв¹³¥´¦Àí
System.out.println(new Date() + " Send mq
message failed. Topic is:" + msg.getTopic());
e.printStackTrace(); } |
·¢ËÍÑÓʱÏûÏ¢¹Ø¼ü´úÂë
try { // ÑÓʱÏûÏ¢£¬µ¥Î»ºÁÃ루ms£©£¬ ÔÚÖ¸¶¨ÑÓ³Ùʱ¼ä£¨µ±Ç°Ê±¼äÖ®ºó£©½øÐÐͶµÝ£¬ ÀýÈçÏûÏ¢ÔÚ
3 ÃëºóͶµÝ long delayTime = System.currentTimeMillis()
+ 3000; // ÉèÖÃÏûÏ¢ÐèÒª±»Í¶µÝµÄʱ¼ä msg.setStartDeliverTime(delayTime);
SendResult sendResult = producer.send(msg); //
ͬ²½·¢ËÍÏûÏ¢£¬Ö»Òª²»Å×Òì³£¾ÍÊdzɹ¦ if (sendResult != null) { System.out.println(new
Date() + " Send mq message success. Topic
is:" + msg.getTopic() + " msgId is:
" + sendResult.getMessageId()); } } catch
(Exception e) { // ÏûÏ¢·¢ËÍʧ°Ü£¬ ÐèÒª½øÐÐÖØÊÔ´¦Àí£¬¿ÉÖØÐ·¢ËÍÕâÌõÏûÏ¢ »ò³Ö¾Ã»¯ÕâÌõÊý¾Ý½øÐв¹³¥´¦Àí
System.out.println(new Date() + " Send mq
message failed. Topic is:" + msg.getTopic());
e.printStackTrace(); } |
×¢ÒâÊÂÏî
1£¬¶¨Ê±ºÍÑÓʱÏûÏ¢µÄ msg.setStartDeliverTime ²ÎÊýÐèÒªÉèÖóɵ±Ç°Ê±¼ä´ÁÖ®ºóµÄij¸öʱ¿Ì£¨µ¥Î»ºÁÃ룩¡£Èç¹û±»ÉèÖóɵ±Ç°Ê±¼ä´Á֮ǰµÄij¸öʱ¿Ì£¬ÏûÏ¢½«Á¢¿ÌͶµÝ¸øÏû·ÑÕß¡£
2£¬¶¨Ê±ºÍÑÓʱÏûÏ¢µÄ msg.setStartDeliverTime ²ÎÊý¿ÉÉèÖÃ40ÌìÄÚµÄÈκÎʱ¿Ì£¨µ¥Î»ºÁÃ룩£¬³¬¹ý40ÌìÏûÏ¢·¢Ëͽ«Ê§°Ü¡£
3£¬StartDeliverTime ÊÇ·þÎñ¶Ë¿ªÊ¼ÏòÏû·Ñ¶ËͶµÝµÄʱ¼ä¡£ Èç¹ûÏû·ÑÕßµ±Ç°ÓÐÏûÏ¢¶Ñ»ý£¬ÄÇô¶¨Ê±ºÍÑÓʱÏûÏ¢»áÅÅÔÚ¶Ñ»ýÏûÏ¢ºóÃæ£¬½«²»ÄÜÑϸñ°´ÕÕÅäÖõÄʱ¼ä½øÐÐͶµÝ¡£
4£¬ÓÉÓÚ¿Í»§¶ËºÍ·þÎñ¶Ë¿ÉÄÜ´æÔÚʱ¼ä²î£¬ÏûÏ¢µÄʵ¼ÊͶµÝʱ¼äÓë¿Í»§¶ËÉèÖõÄͶµÝʱ¼äÖ®¼ä¿ÉÄÜ´æÔÚÆ«²î¡£
5£¬ÉèÖö¨Ê±ºÍÑÓʱÏûÏ¢µÄͶµÝʱ¼äºó£¬ÒÀÈ»ÊÜ 3 ÌìµÄÏûÏ¢±£´æÊ±³¤ÏÞÖÆ¡£ÀýÈ磬ÉèÖö¨Ê±ÏûÏ¢ 5 Ììºó²ÅÄܱ»Ïû·Ñ£¬Èç¹ûµÚ 5 Ììºóһֱû±»Ïû·Ñ£¬ÄÇôÕâÌõÏûÏ¢½«ÔÚµÚ8Ì챻ɾ³ý¡£
6£¬³ý Java ÓïÑÔÖ§³ÖÑÓʱÏûÏ¢Í⣬ÆäËûÓïÑÔ¶¼²»Ö§³ÖÑÓʱÏûÏ¢¡£
·¢²¼ÏûÏ¢ÔÀíͼ

Èý£¬ÊÂÎñÏûÏ¢
RocketMQÌṩÀàËÆX/Open XAµÄ·Ö²¼Ê½ÊÂÎñ¹¦ÄÜÀ´È·±£ÒµÎñ·¢ËÍ·½ºÍMQÏûÏ¢µÄ×îÖÕÒ»ÖÂÐÔ£¬Æä±¾ÖÊÊÇͨ¹ý°ëÏûÏ¢µÄ·½Ê½°Ñ·Ö²¼Ê½ÊÂÎñ·ÅÔÚMQ¶ËÀ´´¦Àí¡£
ÔÀíͼ

ÆäÖУº
1£¬·¢ËÍ·½ÏòÏûÏ¢¶ÓÁÐ RocketMQ ·þÎñ¶Ë·¢ËÍÏûÏ¢¡£
2£¬·þÎñ¶Ë½«ÏûÏ¢³Ö¾Ã»¯³É¹¦Ö®ºó£¬Ïò·¢ËÍ·½ ACK È·ÈÏÏûÏ¢ÒѾ·¢Ëͳɹ¦£¬´ËʱÏûϢΪ°ëÏûÏ¢¡£
3£¬·¢ËÍ·½¿ªÊ¼Ö´Ðб¾µØÊÂÎñÂß¼¡£
4£¬·¢ËÍ·½¸ù¾Ý±¾µØÊÂÎñÖ´Ðнá¹ûÏò·þÎñ¶ËÌá½»¶þ´ÎÈ·ÈÏ£¨Commit »òÊÇ Rollback£©£¬·þÎñ¶ËÊÕµ½ Commit ״̬Ôò½«°ëÏûÏ¢±ê¼ÇΪ¿ÉͶµÝ£¬¶©ÔÄ·½×îÖÕ½«ÊÕµ½¸ÃÏûÏ¢£»·þÎñ¶ËÊÕµ½ Rollback ״̬Ôòɾ³ý°ëÏûÏ¢£¬¶©ÔÄ·½½«²»»á½ÓÊܸÃÏûÏ¢¡£
5£¬ÔÚ¶ÏÍø»òÕßÊÇÓ¦ÓÃÖØÆôµÄÌØÊâÇé¿öÏ£¬ÉÏÊö²½Öè 4 Ìá½»µÄ¶þ´ÎÈ·ÈÏ×îÖÕδµ½´ï·þÎñ¶Ë£¬¾¹ý¹Ì¶¨Ê±¼äºó·þÎñ¶Ë½«¶Ô¸ÃÏûÏ¢·¢ÆðÏûÏ¢»Ø²é¡£
6£¬·¢ËÍ·½ÊÕµ½ÏûÏ¢»Ø²éºó£¬ÐèÒª¼ì²é¶ÔÓ¦ÏûÏ¢µÄ±¾µØÊÂÎñÖ´ÐеÄ×îÖÕ½á¹û¡£
7£¬·¢ËÍ·½¸ù¾Ý¼ì²éµÃµ½µÄ±¾µØÊÂÎñµÄ×îÖÕ״̬ÔÙ´ÎÌá½»¶þ´ÎÈ·ÈÏ£¬·þÎñ¶ËÈÔ°´ÕÕ²½Öè 4 ¶Ô°ëÏûÏ¢½øÐвÙ×÷¡£
RocketMQµÄ°ëÏûÏ¢»úÖÆµÄ×¢ÒâÊÂÏîÊÇ
1£¬¸ù¾ÝµÚÁù²½¿ÉÒÔ¿´³öËûÒªÇó·¢ËÍ·½ÌṩҵÎñ»Ø²é½Ó¿Ú¡£
2£¬²»Äܱ£Ö¤·¢ËÍ·½µÄÏûÏ¢Ãݵȣ¬ÔÚackûÓзµ»ØµÄÇé¿öÏ£¬¿ÉÄÜ´æÔÚÖØ¸´ÏûÏ¢
3£¬Ïû·Ñ·½Òª×öÃݵȴ¦Àí¡£
ºËÐÄ´úÂë
final BusinessService businessService = new BusinessService(); // ±¾µØÒµÎñ
TransactionProducer
producer = ONSFactory.createTransactionProducer (properties,new
LocalTransactionCheckerImpl()); producer.start(); Message
msg = new Message ("Topic", "TagA",
"Hello MQ transaction===". getBytes()); try
{ SendResult sendResult = producer.send(msg,
new LocalTransactionExecuter() { @Override public
TransactionStatus execute (Message msg, Object
arg) { // ÏûÏ¢ ID £¨ÓпÉÄÜÏûÏ¢ÌåÒ»Ñù£¬µ«ÏûÏ¢ ID ²»Ò»Ñù£¬ µ±Ç°ÏûÏ¢ ID ÔÚ¿ØÖÆÌ¨ÎÞ·¨²éѯ£©
String msgId = msg.getMsgID(); // ÏûÏ¢ÌåÄÚÈݽøÐÐ crc32£¬Ò²¿ÉÒÔʹÓÃÆäËüµÄÈç
MD5 long crc32Id = HashUtil.crc32Code (msg.getBody());
// ÏûÏ¢ ID ºÍ crc32id Ö÷ÒªÊÇÓÃÀ´·ÀÖ¹ÏûÏ¢ÖØ¸´ // Èç¹ûÒµÎñ±¾ÉíÊÇÃݵȵģ¬ ¿ÉÒÔºöÂÔ£¬·ñÔòÐèÒªÀûÓÃ
msgId »ò crc32Id À´×öÃÝµÈ // Èç¹ûÒªÇóÏûÏ¢¾ø¶Ô²»Öظ´£¬ÍƼö×ö·¨ÊÇ ¶ÔÏûÏ¢Ìå
body ʹÓà crc32 »ò MD5 À´·ÀÖ¹ÖØ¸´ÏûÏ¢ Object businessServiceArgs
= new Object(); TransactionStatus transactionStatus
=TransactionStatus.Unknow; try { boolean isCommit
= businessService.execbusinessService (businessServiceArgs);
if (isCommit) { // ±¾µØÊÂÎñ³É¹¦ÔòÌá½»ÏûÏ¢ transactionStatus
= TransactionStatus.CommitTransaction; } else
{ // ±¾µØÊÂÎñʧ°ÜÔò»Ø¹öÏûÏ¢ transactionStatus = TransactionStatus. RollbackTransaction;
} } catch (Exception e) {log.error("Message
Id:{}", msgId, e); } System.out.println(msg.getMsgID()); log.warn("Message
Id:{}transactionStatus:{}", msgId, transactionStatus.name());
return transactionStatus; } }, null); } catch
(Exception e) { // ÏûÏ¢·¢ËÍʧ°Ü£¬ ÐèÒª½øÐÐÖØÊÔ´¦Àí£¬¿ÉÖØÐ·¢ËÍÕâÌõÏûÏ¢»ò ³Ö¾Ã»¯ÕâÌõÊý¾Ý½øÐв¹³¥´¦Àí
System.out.println (new Date() + " Send mq
message failed. Topic is:" + msg.getTopic());
e.printStackTrace(); } |
ËùÓÐÏûÏ¢·¢²¼ÔÀíͼ

producerÍêÈ«ÎÞ״̬£¬¿ÉÒÔ¼¯Èº²¿Êð¡£
Name Server¼¯Èº£º
NameServerÊÇÒ»¸ö¼¸ºõÎÞ״̬µÄ½Úµã£¬¿É¼¯Èº²¿Ê𣬽ڵãÖ®¼äÎÞÈκÎÐÅϢͬ²½£¬NameServerºÜÏñ×¢²áÖÐÐĵŦÄÜ¡£
Ìý˵°¢Àï֮ǰµÄNameServer ÊÇÓÃZooKeeper×öµÄ£¬¿ÉÄÜÒòΪZookeeper²»ÄÜÂú×ã´ó¹æÄ£²¢·¢µÄÒªÇó£¬ËùÒÔÖ®ºóNameServer Êǰ¢Àï×ÔÑеġ£
NameServerÆäʵ¾ÍÊÇÒ»¸ö·ÓÉ±í£¬Ëû¹ÜÀíProducerºÍComsumerÖ®¼äµÄ·¢ÏÖºÍ×¢²á¡£
Broker¼¯Èº£º
Broker²¿ÊðÏà¶Ô¸´ÔÓ£¬Broker·ÖΪMasterÓëSlave£¬Ò»¸öMaster¿ÉÒÔ¶ÔÓ¦¶à¸öSlaver£¬µ«ÊÇÒ»¸öSlaverÖ»ÄܶÔÓ¦Ò»¸öMaster£¬MasterÓëSlaverµÄ¶ÔÓ¦¹ØÏµÍ¨¹ýÖ¸¶¨ÏàͬµÄBrokerName¡£
²»Í¬µÄBrokerIdÀ´¶¨Ò壬BrokerIdΪ0±íʾMaster£¬·Ç0±íʾSlaver¡£Master¿ÉÒÔ²¿Êð¶à¸ö¡£Ã¿¸öBrokerÓëNameServer¼¯ÈºÖеÄËùÓнڵ㽨Á¢³¤Á¬½Ó£¬¶¨Ê±×¢²áTopicÐÅÏ¢µ½ËùÓеÄNameServer¡£
Consumer¼¯Èº£º
¶©ÔÄ·½Ê½
ÏûÏ¢¶ÓÁÐ RocketMQ Ö§³ÖÒÔÏÂÁ½ÖÖ¶©ÔÄ·½Ê½£º
¼¯Èº¶©ÔÄ£ºÍ¬Ò»¸ö Group ID Ëù±êʶµÄËùÓÐ Consumer ƽ¾ù·Ö̯Ïû·ÑÏûÏ¢¡£ ÀýÈçij¸ö Topic ÓÐ 9 ÌõÏûÏ¢£¬Ò»¸ö Group ID ÓÐ 3 ¸ö Consumer ʵÀý£¬ÄÇôÔÚ¼¯ÈºÏû·ÑģʽÏÂÿ¸öʵÀýƽ¾ù·Ö̯£¬Ö»Ïû·ÑÆäÖÐµÄ 3 ÌõÏûÏ¢¡£
// ¼¯Èº¶©ÔÄ·½Ê½ÉèÖ㨲»ÉèÖõÄÇé¿öÏ£¬ ĬÈÏΪ¼¯Èº¶©ÔÄ·½Ê½£©properties.put (PropertyKeyConst.MessageModel,
PropertyValueConst.CLUSTERING); |
¹ã²¥¶©ÔÄ£ºÍ¬Ò»¸ö Group ID Ëù±êʶµÄËùÓÐ Consumer ¶¼»á¸÷×ÔÏû·ÑijÌõÏûÏ¢Ò»´Î¡£ ÀýÈçij¸ö Topic ÓÐ 9 ÌõÏûÏ¢£¬Ò»¸ö Group ID ÓÐ 3 ¸ö Consumer ʵÀý£¬ÄÇôÔڹ㲥Ïû·ÑģʽÏÂÿ¸öʵÀý¶¼»á¸÷×ÔÏû·Ñ 9 ÌõÏûÏ¢¡£
// ¹ã²¥¶©ÔÄ·½Ê½ÉèÖÃproperties.put (PropertyKeyConst.MessageModel,
PropertyValueConst.BR
OADCASTING); |
¶©ÔÄÏûÏ¢¹Ø¼ü´úÂ룺
Consumer consumer
= ONSFactory.create Consumer(properties); consumer.subscribe ("TopicTestMQ",
"TagA||TagB", **new** MessageListener()
{ //¶©ÔĶà¸ö Tag public Action consume(Message message,
ConsumeContext context) { System.out.println ("Receive:
" + message); return Action. CommitMessage;}}); //¶©ÔÄÁíÍâÒ»¸ö
Topic consumer.subscribe("TopicTestMQ-Other",
"*", **new** MessageListener() { //¶©ÔÄÈ«²¿
Tag public Action consume (Message message, ConsumeContext
context) { System.out.println("Receive:
" + message); return Action.CommitMessage;}}); consumer.start(); |
×¢ÒâÊÂÏ
Ïû·Ñ¶ËÒª×öÃݵȴ¦Àí£¬ËùÓÐMQ»ù±¾É϶¼²»»á×öÃݵȴ¦Àí£¬ÐèÒªÒµÎñ¶Ë´¦Àí£¬ÔÒòÊÇÈç¹ûÔÚMQ¶Ë×öÃݵȴ¦Àí»á´øÀ´MQµÄ¸´ÔÓ¶È£¬¶øÇÒÑÏÖØÓ°ÏìMQµÄÐÔÄÜ¡£
ÏûÏ¢ÊÕ·¢Ä£ÐÍ

Ö÷×ÓÕ˺Ŵ´½¨
´´½¨Ö÷×ÓÕ˺ŵÄÔÒòÊÇȨÏÞÎÊÌâ¡£ÏÂÃæÊÇÖ÷Õ˺Ŵ´½¨Á÷³Ìͼ

×ÓÕ˺ÅÁ÷³Ìͼ

Èý¡¢MQÊÇ΢·þÎñ¼Ü¹¹
·Ç³£ÖØÒªµÄ²¿·Ö
MQµÄµ®Éú°ÑÔÀ´µÄͬ²½¼Ü¹¹Ë¼Î¬×ª±äµ½Òì²½¼Ü¹¹Ë¼Î¬ÌṩһÖÖ·½·¨£¬Îª´ó¹æÄ££¬¸ß²¢·¢µÄÒµÎñ³¡¾°µÄÎȶ¨ÐÔʵÏÖÌṩÁ˺ܺõĽâ¾ö˼·¡£
Martin FowlerÇ¿µ÷£º·Ö²¼Ê½µ÷ÓõĵÚÒ»ÔÔò¾ÍÊDz»Òª·Ö²¼Ê½¡£Õâ¾ä»°¿´ËÆÆÄ¾ßÕÜÀí£¬È»¶ø¾ÍÆóÒµÓ¦ÓÃϵͳ¶øÑÔ£¬Ö»ÒªÕû¸öϵͳÔÚ²»Í£µØÑÝ»¯£¬²¢Óжà¸ö×Óϵͳ¹²Í¬´æÔÚʱ£¬ÕâÌõÔÔò¾Í»á±»ÆÈ´òÆÆ¡£
Martin FowlerÌá³öµÄÕâÌõÔÔò£¬Ò»·½ÃæÊÇÏ£ÍûÉè¼ÆÕßÄܹ»ÉóÉ÷µØ¶Ô´ý·Ö²¼Ê½µ÷Óã¬ÁíÒ»·½ÃæÈ´Ò²ÊÇ·Ö²¼Ê½ÏµÍ³×ÔÉí´æÔÚµÄȱÏÝËùÖ¡£
ËùÒÔ΢·þÎñ²¢²»ÊÇÍòÄÜÒ©£¬Êʺϵļܹ¹²ÅÊÇ×îºÃµÄ¼Ü¹¹¡£
|