±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚjianshu£¬½éÉÜÁËÏûÏ¢µÄ˳ÐòÏû·Ñ¡¢JMS
Selectors¡¢ÏûÏ¢µÄͬ²½/Òì²½½ÓÊÜ·½Ê½¡¢Message¡¢P2P/PubSub¡¢³Ö¾Ã»¯¶©ÔÄ¡¢³Ö¾Ã»¯ÏûÏ¢µ½MySQLÒÔ¼°ÓëSpringÕûºÏµÈ֪ʶ¡£ |
|
½ÓÉÏһƪ¡¶ActiveMQ´ÓÈëÃŵ½¾«Í¨£¨Ò»£©¡·£¬±¾ÆªÖ÷ÒªÌÖÂ۵ϰÌâÊÇ£ºÏûÏ¢µÄ˳ÐòÏû·Ñ¡¢JMS
Selectors¡¢ÏûÏ¢µÄͬ²½/Òì²½½ÓÊÜ·½Ê½¡¢Message¡¢P2P/PubSub¡¢³Ö¾Ã»¯¶©ÔÄ¡¢³Ö¾Ã»¯ÏûÏ¢µ½MySQLÒÔ¼°ÓëSpringÕûºÏµÈ֪ʶ¡£
ÏûÏ¢µÄ˳ÐòÏû·Ñ
ÔÚÉÏһƪÎÄÕÂÖУ¬ÎÒÃÇÒѾÃ÷È·ÖªµÀÁËActiveMQ²¢²»Äܱ£Ö¤Ïû·ÑµÄ˳ÐòÐÔ£¬¼´±ãÎÒÃÇʹÓÃÁËÏûÏ¢ÓÅÏȼ¶¡£¶øÔÚʵ¼Ê¿ª·¢ÖУ¬ÓÐЩ³¡¾°ÓÖÊÇÐèÒª¶ÔÏûÏ¢½øÐÐ˳ÐòÏû·ÑµÄ£¬±ÈÈ磺Óû§´Óϵ¥¡¢µ½Ö§¸¶¡¢ÔÙµ½·¢»õµÈ¡£Èç¹ûʹÓÃActiveMQ¸ÃÈçºÎ±£Ö¤Ïû·ÑµÄ˳ÐòÐÔÄØ£¿

ÏûÏ¢Ïû·Ñ˳ÐòÐÔ
Ê×ÏÈÀ´Ëµ£¬ÔÚʵ¼ÊÖУ¬ÎÒÃDz¢²»ÐèÒªµÄÊǶÔÈ«²¿ÏûÏ¢µÄÈ«¾ÖÓÐÐòÏû·Ñ£¬ÎÒÃǽö½öÐèÒªµÄÊǾֲ¿ÒµÎñÓÐÐòÐÔÏû·Ñ¡£±ÈÈç˵£¬ÎÒÃǽö½öÐèÒªµÄÊÇÒ»¸öÓû§µÄ϶©µ¥¡¢Ö§¸¶¡¢·¢»õÕâ¸ö¹ý³ÌµÄ3ÌõÏûÏ¢ÓÐÐòÏû·Ñ¡£
±ÈÈ磬ÎÒÃÇ¿ÉÒÔ¸ù¾ÝÓû§ID¼òµ¥×öÒ»¸öHASH£¬½«ÏûÏ¢¶¨Î»µ½²»Í¬µÄ¶ÓÁÐÉÏ£¬Ò²¾ÍÒâζ×Åͬһ¸öÓû§µÄÏûÏ¢½«·¢Íùͬһ¸ö¶ÓÁС£ÕâÑù×öµÄºÃ´¦ÔÚÓÚ£¬¶à¸ö¶ÓÁÐÖ®¼ä¿ÉÒÔ²¢Ðд¦Àí¡£
È»ºó£¬ÔÚ¶ÓÁÐÉÏ¿ÉÒÔ¶ÔÒ»¶Îʱ¼äÉϵÄÏûÏ¢°´ÕÕÓû§·Ö×é½øÐÐÅÅÐò£¬ÕâÖ»ÊÇÒ»¸öÉÙÁ¿ÏûÏ¢µÄ¾Ö²¿ÅÅÐò¶øÒÑ£¬±ÈÈçQueue-AÉÏÓÐÒ»¸öÓû§µÄ3ÌõÏûÏ¢£¨¶©µ¥ÏûÏ¢msg1¡¢Ö§¸¶ÏûÏ¢msg2¡¢·¢»õÏûÏ¢msg3£©£¬ÄÇô£¬msg1½«½»¸ø¶©µ¥ÒµÎñϵͳ£¬´¦ÀíÍê³Éºó£¬msg2½»¸øÖ§¸¶ÏµÍ³£¬´¦ÀíÍê³Éºó£¬msg3½»¸ø·¢»õϵͳ¡£ËäÈ»Õâ¸ö´¦Àí¹ý³ÌÊÇͬ²½µÄ£¨Ò»ÌõÏûÏ¢´¦ÀíÍ꣬ÔÚ½Ó×Å´¦Àí£©£¬µ«ÊÇËüµÄ²¢·¢ÐÔ£¬ÏµÍ³µÄ´¦ÀíÄÜÁ¦²¢Ã»ÓÐϽµ£¡ÎªÊ²Ã´ÕâÃ´ËµÄØ£¿
¼ÙÉ裬msg1/msg2/msg3´¦Àí¸÷ÐèÒª0.1S£¬Èç¹û¶©µ¥ÒµÎñϵͳ¡¢Ö§¸¶ÏµÍ³¡¢·¢»õϵͳ²¢Ã»Óзֿª£¬¶øÊÇÒ»¸ö¡°´óϵͳ¡±£¬ÄÇôÏÔÈ»¶©µ¥ÒµÎñÔÚ0.1SÍê³Éºó£¬ÐèÒªµÈ´ýºóÃæµÄÖ§¸¶¡¢·¢»õÂß¼´¦ÀíÍê²ÅÄܼÌÐø¹¤×÷£¬Òâζ×Ŷ©µ¥ÒµÎñ¸ÉÁË0.1SµÄ»î£¬µÈÁË0.2S£¬µ¼ÖÂÔÚ0.3ÃëÄÚ¶©µ¥ÒµÎñÖ»´¦ÀíÁË1ÌõÏûÏ¢¡£¶øÏÖÔÚÕâ3¸öϵͳÊÇ·Ö¿ªµÄ£¬ÄÇôÔÚ0.3SÄÚ£¬¶©µ¥ÒµÎñϵͳ¿ÉÒÔ´¦Àí3ÌõÏûÏ¢£¬¶øÇÒûÓÐÒµÎñϵͳÏÐ×Å£¡
ʵ¼ÊÉÏ£¬RocketMQÔÚÏû·Ñ˳ÐòÐÔÕâ¿éÒª±ÈActiveMQҪǿ´óЩ£¬ºóÆÚÔÚRocketMQרÌâÖÐÔÙΪ´ó¼Ò½éÉÜ¡£
JMS Selectors
JMS Selectors£¬¼´ÏûϢѡÔñÆ÷¡£ÔÚ¡¶ActiveMQ´ÓÈëÃŵ½¾«Í¨£¨Ò»£©¡·ÖУ¬½éÉܹýÏûÏ¢µÄ×é³É²¿·Ö£¬ÆäÖÐ̸µ½ÏûÏ¢¶ÔÏóÓÐÏûÏ¢ÊôÐÔ£¬ÓÃÓÚÏûϢѡÔñÆ÷¡£ÎÒÃÇÀ´¿´Ò»¸ö´úÂëÆ¬¶Î£¬Äã¾Í»áÃ÷°×£º

Éú²úÕ߯¬¶Î

Ïû·ÑÕ߯¬¶Î
ÐèҪעÒâһϼ¸µã£º
µÚÒ»£¬Éú²úÕß¶ËÐèÒªÉèÖÃÏûÏ¢ÊôÐÔ£¬Ò»¶¨Òª×¢ÒâµÄÊÇsetXxxProperty(filed,value)
µÚ¶þ£¬¸ø³öÌõ¼þ£¬Æäʵ±¾ÖÊÉϾÍÊÇSQL92Óï·¨
µÚÈý£¬´´½¨Ïû·ÑÕßµÄʱºò£¬Ö¸¶¨Ìõ¼þ¼´¿É
ÏûÏ¢µÄͬ²½ AND Òì²½ ½ÓÊÜ
ÏûÏ¢µÄ½ÓÊÜ£¬ÎÒÃÇÒѾ֪µÀ£¬¿ÉÒÔͨ¹ýÏû·ÑÕßµÄreceive()/receive(long
time)/receiveNoWait()£¬ÕâÖÖ·½Ê½ÊÇclient¶ËÖ÷¶¯½ÓÊÜÏûÏ¢£¬¿ÉÒÔÀí½âΪÏûÏ¢µÄͬ²½½ÓÊÜ¡£ÒªÖªµÀÕâÖÖͬ²½µÄÏûÏ¢½ÓÊÜ·½Ê½£¬ÊÇÈÃÎÒÃǺÜÄÑÊܵģ¬ÎÒÃDz»µÃ²»Ð´Ò»¸öËÀÑ»·À´²»¶Ï½ÓÊÜÏûÏ¢¡£ÄÇôÓÐûÓÐÒ»ÖֱȽÏÓÅÑŵķ½Ê½£¬±ÈÈçÎÒÃÇÉèÖÃÒ»¸öÀàËÆÏûÏ¢¼àÌýµÄ»úÖÆ£¬Ò»µ©¶ÓÁÐÉÏÓÐÏûÏ¢ÁË£¬ÄÇô»Øµ÷ÎÒÃǵÄmessage
handler½øÐд¦ÀíÄØ£¿

Message Listener
ÏûÏ¢µÄÒì²½½ÓÊÜÊÇÖ¸µ±ÏûÏ¢µ½´ïʱ£¬ActiveMQÖ÷¶¯Í¨Öª¿Í»§¶Ë¡£¿ÉÒÔͨ¹ý×¢²áÒ»¸öʵÏÖÁËMessageListener½Ó¿ÚµÄ¶ÔÏóµ½MessageConsumer¡£MessageListenerÖ»ÓÐÒ»¸ö±ØÐëҪʵÏֵķ½·¨£¬¼´onMessage¡£ÔÚ·¢ÍùDestinationµÄÏûϢʱ£¬»áµ÷Óø÷½·¨¡£
ÕâÖÖÒì²½½ÓÊÜ¡°Ã²ËÆ¡±ÊÇActiveMQÖ÷¶¯µÄÍÆËÍÏûÏ¢¸øÏû·ÑÕߣ¬Æä±¾ÖÊ»¹ÊÇÏû·ÑÕßÂÖѯÏûÏ¢·þÎñÆ÷µ¼Öµģ¬Ö»²»¹ýÕâ¸ö¹ý³Ì±»·â×°ÁË£¡
Message
JMS³ÌÐòµÄºËÐÄÔÚÓÚ£¬Éú²úºÍÏû·ÑµÄÏûÏ¢Äܹ»±»ÆäËû³ÌÐòËùʹÓõ½¡£JMS
MessageÊÇÒ»¸ö¼È¼òµ¥ÓÖ²»·¦Áé»îµÄ»ù±¾¸ñʽ£¬ÓÉÏûϢͷ¡¢ÊôÐÔ¡¢ÏûÏ¢Ìå3²¿·Ö×é³É¡£

Message
×¢Ò⣬ÔÚÏû·ÑÕß¶Ë£¬ÎÒÃǽÓÊܵ½ÏûÏ¢ºó£¬Ò»°ãÐèҪͨ¹ýinstanceofÀ´ÅжÏÀàÐͺóÔÚ½øÐд¦Àí£¡
ÔÚActiveMQÖУ¬»¹´æÔÚÒ»ÀàÁÙʱÏûÏ¢£¬¾ÍÊÇͨ¹ý´´½¨ÁÙʱ¶ÓÁÐ/ÁÙʱÖ÷Ì⣬Èç¹ûConnectionÒ»µ©¹Ø±Õ£¬ÄÇôÁÙʱĿ±ê¾Í¹Ø±Õ£¬ÏûÏ¢ÄÚÈÝÒ²¾ÍÏûʧ¡£Á˽âϼ´¿É£¬Êµ¼ÊÖв¢²»ÊÊÓá£
P2P or Pub/Sub
ÉÏ2ÕÅͼ£¬Äã¾Í»áÃ÷°×Õâ2ÖÖģʽµÄÇø±ðÁË¡£

P2P
Éú²úÕß¶Ë·¢ËÍÒ»ÌõÏûÏ¢£¬Ïû·ÑÕß¶ËÖ»»áÓÐÒ»¸öÏû·ÑÕßÏû·ÑÕâ¸öÏûÏ¢¡£ºÃÏñ´òµç»°£¬Ò»¶ÔһͨÐÅ£¡

Pub/Sub
Ò»¶Ô¶àͨÐÅ£¬·¢ËÍÒ»ÌõÏûÏ¢£¬ËùÓж©ÔÄÁ˸ÃÄ¿±êµÄÏû·ÑÕß¶¼»áÊÕµ½ÏûÏ¢¡£
P2P¡¢Pub/SubÔÚ´úÂëÉϵÄÇø±ðµã½ö½öÔÚÓÚ£¬Ä¿±êÀàÐ͵Ĵ´½¨ÊÇcreateQueue or createTopic£¬ÆäËûÒ»ÇÐÕվɣ¡
¶ÔÓÚ¶©ÔÄģʽ£¬¶Ô¶©ÔÄÕßÌá³öÁËÌØÊâµÄÒªÇó£¬ÒªÏëÊÕµ½ÏûÏ¢£¬±ØÐëÏȶ©ÔÄ£¬¶øÇÒ¶©ÔĽø³Ì±ØÐëÒ»Ö±´¦ÓÚÔËÐÐ״̬£¡Êµ¼ÊÉÏ£¬ÓÐʱºòÏû·ÑÕßÖØÆôÁËÏ£¬ÄÇôÕâ¸öÏû·ÑÕß½«¶ªÊ§µôһЩÏûÏ¢£¬ÄÇôÄÜ·ñ±ÜÃâÕâÑùµÄÇé¿öÄØ£¿ActiveMQÒÑ¾ÌæÎÒÃÇÏëºÃÁË£¬¾ÍÊdz־û¯¶©ÔÄ£¡
³Ö¾Ã»¯¶©ÔÄ
Ëùν³Ö¾Ã»¯¶©ÔÄ£¬´ò¸ö±È·½£¬¾ÍÊÇ˵¸úMQ´òÉùÕкô£¬¼´±ãÎÒ²»ÔÚ£¬ÄÇô¸øÎÒ·¢Ë͵ÄÏûÏ¢ÔÝ´æÔÚMQ£¬µÈÎÒÀ´ÁË£¬ÔÙ¸øÎÒ·¢¹ýÀ´¡£Ëµ°×ÁË£¬³Ö¾Ã»¯¶©ÔÄ£¬ÐèÒª¸øMQ±¸¸ö°¸£¨ÄãÊÇË£¬ÏëÔÚÄĸöTopicÉϸãÌØÊ⻯£©£¡¿´Ò»¸ö´úÂëÆ¬¶Î£º

³Ö¾Ã»¯¶©ÔÄ»úÖÆ
ÿһ¸ö³Ö¾Ã»¯¶©ÔÄÕß¶¼Ó¦¸ÃÓÐÒ»¸öΨһµÄID×÷Ϊ±êʾÒÔ¼°ÒªÔÚÄĸöTopicÉϽøÐг־û¯¶©ÔÄ£¬Ò»µ©ÕâЩÐÅÏ¢¸æÖªMQÖ®ºó£¬ÄÇôÒÔºó²»Â۳־û¯¶©ÔÄÕßÔÚ²»ÔÚÏߣ¬ÄÇôËûµÄÏûÏ¢»áÔÝ´æÔÚMQ£¬ÒԺ󶼻ᷢ¸øËû£¡
³Ö¾Ã»¯ÏûÏ¢µ½MySQL
ÔÚǰÎÄÖÐÒѾÌἰĬÈÏÇé¿öÏ£¬ActiveMQÊÇ¿ªÆô³Ö¾Ã»¯ÏûÏ¢»úÖÆµÄ£¬²¢ÇÒÊdz־û¯µ½kahadbµÄ£¬µ«ÊÇ"ºÜ¿Éϧ"kahadb¶ÔÎÒÃDz»ÊǺÜÓѺõĿÉÊÓ»¯£¬ÆäʵActiveMQÌṩÁËÅäÖõķ½Ê½ÈÃÎÒÃÇÀ´Ñ¡Ôñ³Ö¾Ã»¯ÏûÏ¢µ½ÄÄÀÕâÀïÎÒÒÔµ½MySQLΪÀýÀ´ËµÃ÷¡£(ʵ¼ÊÉÏActiveMQÒѾÔÚconfÅäÖÃÎļþÖÐÌṩÁËÏàÓ¦µÄÀý×Ó£¬ÎÒÕâÀï¾Í¼òµ¥ËµÃ÷ÏÂ)

ÔÚactivemq.xmlµÄ<broker>½ÚµãÖÐÔö¼ÓMySQLÐÅÏ¢
×¢Òâµ½Õâ¸öbeanµÄid£¬Õâ¸öÊÇÒª±»ÒýÓõġ£

×¢ÊÍkahadb£¬ÆôÓó־û¯µ½MySQLÅäÖÃ
ʵ¼ÊÖУ¬ÎÒÃÇ»á³Ö¾Ã»¯µ½ÄÄÀïÄØ£¿Ò»°ãÇé¿öÏ£¬±ÈÈçµ½kahadb£¬±ÈÈçµ½leveldb£¬ÒòΪÕâЩÊý¾Ý¿âµÄÐÔÄÜÒª½ÏMySQL¸ü¸ßЩ£¬ÎÒÃDz¢²»¹ØÐÄÏûÏ¢µÄ¡°¿ÉÊÓ»¯¡±£¬¸ü¼Ó¹ØÐĵÄÊÇÏûÏ¢Ôڳ־û¯µÄͬʱ¸ü¼Ó¸ßЧ£¡
ÓëSpringÕûºÏ
ÕâÀïÎÒ½«Îª´ó¼ÒÑÝʾSpringºÍActiveMQÕûºÏµÄºËÐÄÒªËØ¡£²ÉÓÃSpring£¬²»ÒªWebÈÝÆ÷£¬²»Éæ¼°Spring-MVC£¬¶øÇÒÔÚÕâÀïÎÒ½«²ÉÓÃJUnit
+ Spring-TestÀ´½øÐвâÊÔ£¡ÔÚÎÄÕÂĩβÎÒ½«ÌṩԴÂëÏÂÔØ¡£OK£¬ÏÈÀ´¿´Ò»ÑÛ¹¤³Ì½ØÍ¼£º

¹¤³Ì½á¹¹
µÚÒ»²½£ºPOM.XMLÅäÖÃ

maven dependency tree
µÚ¶þ²½£ºMQÐÅÏ¢ÅäÖÃÎļþ¡¢SpringÅäÖÃÎļþ

activemq.properties

spring-context.xml
ÏÂÃæÎÒÃÇÖØµã¹Ø×¢spring-activemq.xml£º

ConnectionFactory
×¢Òâ´ÓActiveMQConectionFactoryµ½PooledConnectionFactory£¬µ½SpringÌṩµÄSingleConnectionFactory£¬¾ÍÊÇÒ»¸öÊÊÅäµÄ¹ý³Ì¡£

Éú²úÕß¡¢Ïû·ÑÕßÅäÖÃ
×¢ÒâSpringµÄÌ×·¾³£ÊÇÕâÑùµÄ£¬ÌṩXxxTemplate£¬±ÈÈçHibernateTemplate£¬¶ÔÓÚJMS£¬ÌṩÁËJmsTemplate¡£
Éú²úÕßÓ¦¸Ã³ÖÓÐJmsTemplate½øÐз¢ËÍÏûÏ¢¡£
Ïû·ÑÕߣ¬Ìṩ¼àÌýÆ÷¡¢¼àÌýµÄÄ¿µÄµØ¡¢Á¬½Ó¹¤³§¼´¿É¡£
ÉÏÃæµÄÅäÖã¬Ö»ÊÇÒ»¸ö·Ç³£¼òµ¥µÄʾÀý£¬±ÈÈçÊÇ·¢Ë͵½¶ÓÁУ¬»¹ÊÇ·¢Ë͵½Ö÷Ì⣬ÊÂÎñµÄÅäÖã¬Ç©ÊÕ»úÖÆµÄÅäÖã¬ttl/priorityµÈÅäÖÃÔÚºóÎÄͨ¹ý¿´Ò»ÏÂÔ´Â룬Äã¾Í»áÖªµÀ¸ÃÈçºÎÅäÖÃÁË¡£
µÚÈý²½£ºÏû·ÑÕßʵÏÖ¼àÌýÆ÷

springÌṩµÄ½Ó¿Ú
µÚËIJ½£ºÉú²úÕß

ͨ¹ý×¢ÈëÄõ½JmsTemplate
µÚÎå²½£ºÀûÓÃJunit4 + SpringTest·½Ê½½øÐвâÊÔ
ÎÒÃÇÒÔǰÔÚ²âÊÔSpringÕâÒ»¿é£¬´ó¶¼ÊÇͨ¹ýÊÖ¶¯±àÂëµÄ·½Ê½£¨¼ÓÔØXML£¬setter/getter
bean£©½øÐУ¬ÕâÀïÎÒ½«Îª´ó¼Ò½éÉÜÒ»ÖÖȫеķ½Ê½²âÊÔSpring³ÌÐò£¡

²âÊÔ»ùÀà
ΪʲôҪÌṩһ¸ö²âÊÔ»ùÀàÄØ£¿ÒòΪÎÒÃÇ¿ÉÄÜÓкܶà¸ö²âÊÔÀ࣬Èç¹ûÓÐÁËÕâ¸ö»ùÀ࣬ÆäËû²âÊÔÀà¼Ì³ÐËü£¬¾Í¿ÉÒÔ×Ô¶¯»ñµÃ²âÊÔ»ùÀàµÄÊôÐÔÁË¡£
@RunWith ?Ö¸Ã÷²ÉÓÃSpringJunit4½øÐвâÊÔ
@ContextConfiguration ¸æËßÅäÖÃÎļþÔÚÄÄÀï

Éú²úÕß²âÊÔÀà
·¢ÏÖûÓУ¬ÕâÑùдJunitµ¥Ôª²âÊÔ£¬ºÍÒÔǰ¸Ð¾õ²»Ò»Ñù£¡
Æäʵ£¬SpringTest + Junit4»¹ÌṩÁ˺ܶ๦ÄÜÇ¿´óµÄµØ·½£¬±ÈÈç¿ÉÒÔÉèÖÃÊý¾Ý¿âÊÂÎñ¡£Èç¹ûÎÒÃÇÔÚ²âÊԵĹý³Ì½áÊøºó£¬Ï£Íû»Ø¹öÊý¾Ý¿âµÄ»°£¬ºÜ¼òµ¥£¬Ö»ÐèÒªÔÚÏàÓ¦·½·¨ÉÏ´òÉÏ×¢½â¼´¿É¡£
ÔËÐнá¹û

Test Result
JmsTemplate
¿´Ò»ÏÂÊôÐÔ£º

JmsTemplate
ºÜ¶àÊôÐÔ£¬ÊDz»ÊǺÜÊìÏ¤ÄØ£¿JmsTemplateµÄ¸¸ÀàÖÐÓÐÒ»¸öÖØÒªÊôÐÔ£º

pubSubDomain
ĬÈÏÇé¿öÏ£¬ÊÇP2Pģʽ£¬Èç¹û½«Õâ¸öÊôÐÔÅäÖóÉtrue£¬ÄÇô½«ÊÇÖ÷Ìâģʽ¡£OK£¬µ½ÕâÀïÕâÆª²©¿ÍµÄÄÚÈݾͽéÉÜÍê±ÏÁË£¬ÏÂһƪÊǹØÓÚActiveMQ¼¯Èº·½ÃæµÄ֪ʶ£¬See
you again.±¾Æª²©¿Í¹¤³Ì´úÂëÏÂÔØµØÖ·£º http://pan.baidu.com/s/1i4HEZsxÃÜÂ룺h2hh |