±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚjianshu£¬±¾ÆªÎÄÕ½éÉÜÁËJMS¡¢ActiveMQ
µÄ»ù´¡ÖªÊ¶£¬²¢ÇÒ½²½âÁËÒ»¸öHelloWorld¼¶±ðµÄÀý×Ó°ïÖúÀí½â¡£ |
|
ÕâÊǹØÓÚÏûÏ¢Öмä¼þActiveMQµÄÒ»¸öϵÁÐרÌâÎÄÕ£¬½«º¸ÇJMS¡¢ActiveMQµÄ³õ²½ÈëÃż°APIÏêϸʹÓá¢Á½ÖÖ¾µäµÄÏûϢģʽ£¨PTP
and Pub/Sub£©¡¢ÓëSpringÕûºÏ¡¢ActiveMQ¼¯Èº¡¢¼à¿ØÓëÅäÖÃÓÅ»¯µÈ¡£»°²»¶à˵£¬ÎÒÃÇÀ´Ò»ÆðÇÆÒ»ÇÆ£¡
JMS
Ê×ÏÈÀ´Ëµ½ÏÔçÒÔǰ£¬Ò²¾ÍÊÇûÓÐJMSµÄÄǸöʱºò£¬ºÜ¶àÓ¦ÓÃϵͳ´æÔÚһЩȱÏÝ£º
1.ͨÐŵÄͬ²½ÐÔ
client¶Ë·¢Æðµ÷Óú󣬱ØÐëµÈ´ýserver´¦ÀíÍê³É²¢·µ»Ø½á¹ûºó²ÅÄܼÌÐøÖ´ÐÐ
2.client ºÍ server µÄÉúÃüÖÜÆÚñîºÏÌ«¸ß
client½ø³ÌºÍserver·þÎñ½ø³Ì¶¼±ØÐë¿ÉÓã¬Èç¹ûserver³öÏÖÎÊÌâ»òÕßÍøÂç¹ÊÕÏ£¬ÄÇôclient¶Ë»áÊÕµ½Òì³£
3.µã¶ÔµãͨÐÅ
client¶ËµÄÒ»´Îµ÷ÓÃÖ»ÄÜ·¢Ë͸øÄ³Ò»¸öµ¥¶ÀµÄ·þÎñ¶ÔÏó£¬ÎÞ·¨Ò»¶Ô¶à
JMS£¬¼´Java Message Service£¬Í¨¹ýÃæÏòÏûÏ¢Öмä¼þ£¨MOM£ºMessage Oriented
Middleware£©µÄ·½Ê½ºÜºÃµÄ½â¾öÁËÉÏÃæµÄÎÊÌâ¡£´óÖµĹý³ÌÊÇÕâÑùµÄ£º·¢ËÍÕß°ÑÏûÏ¢·¢Ë͸øÏûÏ¢·þÎñÆ÷£¬ÏûÏ¢·þÎñÆ÷½«ÏûÏ¢´æ·ÅÔÚÈô¸É¶ÓÁÐ/Ö÷ÌâÖУ¬ÔÚºÏÊʵÄʱºò£¬ÏûÏ¢·þÎñÆ÷»á½«ÏûϢת·¢¸ø½ÓÊÜÕß¡£ÔÚÕâ¸ö¹ý³ÌÖУ¬·¢ËͺͽÓÊÜÊÇÒì²½µÄ£¬Ò²¾ÍÊÇ·¢ËÍÎÞÐèµÈ´ý£¬¶øÇÒ·¢ËÍÕߺͽÓÊÜÕßµÄÉúÃüÖÜÆÚҲûÓбØÈ»¹ØÏµ£»ÔÚpub/subģʽÏ£¬Ò²¿ÉÒÔÍê³ÉÒ»¶Ô¶àµÄͨÐÅ£¬¼´ÈÃÒ»¸öÏûÏ¢Óжà¸ö½ÓÊÜÕß¡£

JMS
ÐèҪעÒâµÄÊÇ£¬JMSÖ»ÊǶ¨ÒåÁËJava·ÃÎÊÏûÏ¢Öмä¼þµÄ½Ó¿Ú£¬Æäʵ¾ÍÊÇÔÚ°üjavax.jmsÖУ¬Äã»á·¢ÏÖÕâ¸ö°üϳýÁËÒì³£¶¨Ò壬ÆäËû¶¼ÊÇinterface¡£ÎÒÃÇ¿ÉÒÔɨһÑÛ£¬±ÈÈç
Message£º

Message½Ó¿Ú
ÎÒÏëÄãÓ¦¸Ã·¢ÏÖÁË£¬JMSÖ»¸ø³ö½Ó¿Ú£¬È»ºóÓɾßÌåµÄÖмä¼þȥʵÏÖ£¬±ÈÈçActiveMQ¾ÍÊÇʵÏÖÁËJMSµÄÒ»ÖÖProvider£¬»¹Óа¢Àï°Í°ÍµÄRocketMQ£¨ºóÐø×¨ÌâÖÐÔÚΪ´ó¼Ò½éÉÜ£©¡£ÕâЩÏûÏ¢Öмä¼þ¶¼·ûºÏJMS¹æ·¶¡£ËµÆð¹æ·¶£¬×ÔȻҪ¶¨ÒåһЩÊõÓ
Provider/MessageProvider£ºÉú²úÕß
Consumer/MessageConsumer£ºÏû·ÑÕß
PTP£ºPoint To Point£¬µã¶ÔµãͨÐÅÏûϢģÐÍ
Pub/Sub£ºPublish/Subscribe£¬·¢²¼¶©ÔÄÏûϢģÐÍ
Queue£º¶ÓÁУ¬Ä¿±êÀàÐÍÖ®Ò»£¬ºÍPTP½áºÏ
Topic£ºÖ÷Ì⣬Ŀ±êÀàÐÍÖ®Ò»£¬ºÍPub/Sub½áºÏ
ConnectionFactory£ºÁ¬½Ó¹¤³§£¬JMSÓÃËü´´½¨Á¬½Ó
Connnection£ºJMS Clientµ½JMS ProviderµÄÁ¬½Ó
Destination£ºÏûϢĿµÄµØ£¬ÓÉSession´´½¨
Session£º»á»°£¬ÓÉConnection´´½¨£¬ÊµÖÊÉϾÍÊÇ·¢ËÍ¡¢½ÓÊÜÏûÏ¢µÄÒ»¸öỊ̈߳¬Òò´ËÉú²úÕß¡¢Ïû·ÑÕß¶¼ÊÇSession´´½¨µÄ
³õ²½À´¿´£¬Session·Ç³£ºËÐÄ£¬ÒòΪºÜ¶à¶«Î÷¶¼ÊÇËü´´½¨µÄ£¬ÔÚºóÎÄÖпÉÒÔͨ¹ý´úÂëÀ´½øÒ»²½ÈÏʶÕâЩÊõÓï¡£
ActiveMQ QuickStar
tActiveMQÊÇApache³öÆ·µÄ£¬·Ç³£Á÷ÐеÄÏûÏ¢Öмä¼þ£¬¿ÉÒÔËµÒªÕÆÎÕÏûÏ¢Öмä¼þ£¬ÐèÒª´ÓActiveMQ¿ªÊ¼£¬ÒªÕÆÎÕ¸ü¼ÓÇ¿´óµÄRocketMQ£¬Ò²ÐèÒªActiveMQµÄ»ù´¡£¬Òò´ËÎÒÃÇÀ´¸ã¶¨Ëü°É¡£¹ÙÍøµØÖ·£ºhttp://activemq.apache.org/£¬Ä¿Ç°×îеİ汾ÊÇ5.14.4£¬ÎÒÕâ±ß½«ÒÔ×îаæÀ´½²½â¡£ÕâÆªÎÄÕÂÖ÷ÒªÊÇActiveMQµÄ³õ²½£¬Òò´ËÎÒÕâ±ßÔÝʱÓÃwindows°æ±¾£¬ºóÆÚ²ÉÓÃLinux¡£

ActiveMQĿ¼½á¹¹
binÏÂÃæ´æ·ÅµÄÊÇActiveMQµÄÆô¶¯½Å±¾activemq.bat£¬×¢Òâ·Ö32¡¢64λ
confÀïÃæÊÇÅäÖÃÎļþ£¬ÖØµã¹Ø×¢µÄÊÇactivemq.xml¡¢jetty.xml¡¢jetty-realm.properties¡£ÔڵǼActiveMQ
Web¿ØÖÆÌ¨ÐèÒªÓû§Ãû¡¢ÃÜÂëÐÅÏ¢£»ÔÚJMS CLIENTºÍActiveMQ½øÐкÎÖÖÐÒéµÄÁ¬½Ó¡¢¶Ë¿ÚÊÇʲôµÈÕâЩÐÅÏ¢¶¼ÔÚÉÏÃæµÄÅäÖÃÎļþÖпÉÒÔÌåÏÖ¡£
dataĿ¼ÏÂÊÇActiveMQ½øÐÐÏûÏ¢³Ö¾Ã»¯´æ·ÅµÄµØ·½£¬Ä¬ÈϲÉÓõÄÊÇkahadb£¬µ±È»ÎÒÃÇ¿ÉÒÔ²ÉÓÃleveldb£¬»òÕß²ÉÓÃJDBC´æ´¢µ½MySQL£¬»òÕ߸ɴ಻ʹÓó־û¯»úÖÆ¡£
webapps£¬×¢ÒâActiveMQ×Ô´øJettyÌṩWeb¹Ü¿ØÌ¨
libÖÐActiveMQΪÎÒÃÇÌṩÁË·Ö¹¦ÄܵÄJAR°ü£¬µ±È»Ò²ÌṩÁËactivemq-all-5.14.4.jar
ÔÚJDK°²×°Ã»ÓÐÎÊÌâµÄÇé¿öÏ£¬Ö±½Óactivemq.batÆô¶¯Ëü£¬²¢·ÃÎÊWeb¿ØÖÆÌ¨£¡

ActiveMQ Start
µ½ÕâÀActiveMQ¾ÍÒѾÆô¶¯ÁË£¬So easy~?·ÃÎÊActiveMQ web¿ØÖÆÌ¨µÄÓû§Ãû¡¢ÃÜÂëÔÚÄÄÀïÅäÖõģ¿URLµ±ÖеĶ˿ÚÊÇÔÚÄÄÀïÅäÖõģ¿

username/pwd 4 access web?

port 4 web console
Write Code 4 ActiveMQ
À´Ò»¸öHelloWorld¼¶±ðµÄÀý×Ó£¬À´¸ÐÊÜÏÂActiveMQ¡£¾ßÌåÀ´Ëµ£¬ÎÒÕâ±ß»áдһ¸öÉú²úÕßÓÃÓÚ·¢ËÍÏûÏ¢£¬Ò»¸öÏû·ÑÕßÓÃÓÚ½ÓÊÕÏûÏ¢¡£Êµ¼ÊÉÏ£¬JMSÊÇÓС°Ì×·¡±µÄ£¬ÏÂÃæÎÒ½«ÒÔÉú²úÕßΪÀýÏêϸ˵Ã÷¡£
µÚÒ»²½£º´´½¨ConnectionFactoryÁ¬½Ó¹¤³§

ConnectionFactory
ʵ¼ÊÉÏ£¬ÕâÀïÊÇ´æÔÚ°²È«Òþ»¼µÄ£¬Ò²¾ÍÊÇÈκÎÈËÒ»µ©ÖªµÀMQµÄµØÖ·£¬¾Í¿ÉÒÔÁ¬½Ó·ÃÎÊÁË£¬ÎÒÃÇ¿ÉÒÔÔÚactivemq.xmlÖÐÅäÖÃÖ¸¶¨µÄÓû§¡¢ÃÜÂë²ÅÄÜ·ÃÎÊActiveMQ¡£
¹ØÓÚbroker_bind_url£¬Ä¬ÈϾÍÊÇtcp://localhost:61616£¬ËµÃ÷ÊDzÉÓÃTCPÐÒ飬61616¶Ë¿Ú¡£Æäʵ¶ÔÓÚActiveMQ²»½ö½öÖ§³ÖTCPÐÒ飬»¹ÓÐÆäËûÐÒ飬¿ªÆôÁ˶à¸ö¶Ë¿Ú¡£

µÚ¶þ²½£º´´½¨Connection

Connection
Connection¾Í´ú±íÁËÓ¦ÓóÌÐòºÍÏûÏ¢·þÎñÆ÷Ö®¼äµÄͨÐÅÁ´Â·¡£»ñµÃÁËÁ¬½Ó¹¤³§ºó£¬¾Í¿ÉÒÔ´´½¨Connection¡£
ÊÂʵÉÏ£¬ConnectionFactory´æÔÚÖØÔØ·½·¨£º
Connection createConnection(String username,String
password)?
Ò²¾ÍÊÇ˵ÎÒÃÇÒ²¿ÉÒÔÔÚÕâÀïÖ¸¶¨Óû§Ãû¡¢ÃÜÂë½øÐÐÑéÖ¤
µÚÈý²½£º´´½¨Session

Session
Session£¬ÓÃÓÚ·¢ËͺͽÓÊÜÏûÏ¢£¬¶øÇÒÊǵ¥Ï̵߳ģ¬Ö§³ÖÊÂÎñµÄ¡£Èç¹ûSession¿ªÆôÊÂÎñÖ§³Ö£¬ÄÇôSession½«±£´æÒ»×éÐÅÏ¢£¬ÒªÃ´commitµ½MQ£¬ÒªÃ´»Ø¹öÕâЩÏûÏ¢¡£Session¿ÉÒÔ´´½¨MessageProducer/MessageConsumer¡£
µÚËIJ½£º´´½¨Destination

Destination
ËùνÏûϢĿ±ê£¬¾ÍÊÇÏûÏ¢·¢ËͺͽÓÊܵĵص㣬Ҫôqueue£¬ÒªÃ´topic¡£
µÚÎå²½£º´´½¨MessageProducer

MessageProducer
µÚÁù²½£ºÉèÖó־û¯·½Ê½

³Ö¾Ã»¯·½Ê½ÉèÖÃ
µÚÆß²½£º¶¨ÒåÏûÏ¢¶ÔÏ󣬲¢·¢ËÍ

Message
Éú²úÕߺÍÏû·ÑÕßÖ®¼ä´«µÝµÄ¶ÔÏó£¬ÓÉ3¸öÖ÷Òª²¿·Ö¹¹³É£º
ÏûϢͷ£¨Â·ÓÉ£©+ÏûÏ¢ÊôÐÔ£¨ÏûϢѡÔñÆ÷£¬ÒÔºó½éÉÜ£©+ÏûÏ¢Ì壨JMS¹æ·¶µÄ5ÖÖÀàÐÍÏûÏ¢£©

ÏûÏ¢ÀàÐÍ
µÚ°Ë²½£ºÊÍ·ÅÁ¬½Ó

release resource
±ØÐëclose connection£¬Ö»ÓÐÕâÑùActiveMQ²Å»áÊÍ·Å×ÊÔ´£¡
Ïû·ÑÕߵĴúÂëºÍÉÏÃæ·Ç³£ÀàËÆ£¬Ö»²»¹ý¾ÍÊÇ´´½¨MessageConsumer½øÐÐreceive¶øÒÑ£¬×¢Òâreceive()/receive(long)/receiveNoWait()£¬ÕâЩ˵Ã÷Ïû·ÑÕß¿ÉÒÔ²ÉÓÃ×èÈûģʽ¡¢·Ç×èÈûģʽ½ÓÊÜÏûÏ¢¡£
³ÌÐòÔËÐкó£¬ÎÒÃÇÀ´¿´Ò»Ï¹ܿØÌ¨£º

ActiveMQ Web Info
Messages Enqueued£º±íʾÉú²úÁ˶àÉÙÌõÏûÏ¢£¬¼Ç×öP
Messages Dequeued£º±íʾÏû·ÑÁ˶àÉÙÌõÏûÏ¢£¬¼Ç×öC
Number Of Consumers£º±íʾÔڸöÓÁÐÉÏ»¹ÓжàÉÙÏû·ÑÕßÔڵȴý½ÓÊÜÏûÏ¢
Number Of Pending Messages£º±íʾ»¹ÓжàÉÙÌõÏûϢûÓб»Ïû·Ñ£¬Êµ¼ÊÉÏÊDZíʾÏûÏ¢µÄ»ýѹ³Ì¶È£¬¾ÍÊÇP-C
ÔÚ˵˵Session
ÔÚͨ¹ýConnection´´½¨SessionµÄʱºò£¬ÐèÒªÉèÖÃ2¸ö²ÎÊý£¬Ò»¸öÊÇ·ñÖ§³ÖÊÂÎñ£¬ÁíÒ»¸öÊÇÇ©ÊÕµÄģʽ¡£ÎÒÃÇÖØµã˵һÏÂÇ©ÊÕģʽ£º

Ç©ÊÕģʽ
ʲôÊÇÇ©ÊÕ£¿Í¨Ë×µã˵£¬¾ÍÊÇÏû·ÑÕß½ÓÊܵ½ÏûÏ¢ºó£¬ÐèÒª¸æËßÏûÏ¢·þÎñÆ÷£¬ÎÒÊÕµ½ÏûÏ¢ÁË¡£µ±ÏûÏ¢·þÎñÆ÷ÊÕµ½»ØÖ´ºó£¬±¾ÌõÏûÏ¢½«Ê§Ð§¡£Òò´ËÇ©ÊÕ½«¶ÔPTPģʽ²úÉúºÜ´óÓ°Ïì¡£Èç¹ûÏû·ÑÕßÊÕµ½ÏûÏ¢ºó£¬²¢²»Ç©ÊÕ£¬ÄÇô±¾ÌõÏûÏ¢¼ÌÐøÓÐЧ£¬ºÜ¿ÉÄܻᱻÆäËûÏû·ÑÕßÏû·Ñµô£¡
AUTO_ACKNOWLEDGE£º±íʾÔÚÏû·ÑÕßreceiveÏûÏ¢µÄʱºò×Ô¶¯µÄÇ©ÊÕ
CLIENT_ACKNOWLEDGE£º±íʾÏû·ÑÕßreceiveÏûÏ¢ºó±ØÐëÊÖ¶¯µÄµ÷ÓÃacknowledge()·½·¨½øÐÐÇ©ÊÕ
DUPS_OK_ACKNOWLEDGE£ºÇ©²»Ç©ÊÕÎÞËùνÁË£¬Ö»ÒªÏû·ÑÕßÄܹ»ÈÝÈÌÖØ¸´µÄÏûÏ¢½ÓÊÜ£¬µ±È»ÕâÑù»á½µµÍSessionµÄ¿ªÏú
ÔÚʵ¼ÊÖУ¬ÎÒÃÇÓ¦¸Ã²ÉÓÃÄÄÖÖÇ©ÊÕÄ£Ê½ÄØ£¿CLIENT_ACKNOWLEDGE£¬²ÉÓÃÊÖ¶¯µÄ·½Ê½½Ï×Ô¶¯µÄ·½Ê½¿ÉÄܸüºÃЩ£¬ÒòΪ½ÓÊÕµ½ÁËÏûÏ¢£¬²¢²»Òâζ×ųɹ¦µÄ´¦ÀíÁËÏûÏ¢£¬¼ÙÉèÎÒÃDzÉÓÃÊÖ¶¯Ç©Êյķ½Ê½£¬Ö»ÓÐÔÚÏûÏ¢³É¹¦´¦ÀíµÄǰÌáÏ²ŽøÐÐÇ©ÊÕ£¬ÄÇôֻҪÏûÏ¢´¦Àíʧ°Ü£¬ÄÇôÏûÏ¢»¹ÓÐЧ£¬ÈÔÈ»»á¼ÌÐøÏû·Ñ£¬Ö±ÖÁ³É¹¦´¦Àí£¡
¹ØÓÚÏûÏ¢µÄpriority/ttl/deliveryMode
ÏûÏ¢ÓÐÓÅÏȼ¶¼°´æ»îʱ¼ä£¬ÔÚMessageProducer½øÐÐsendµÄʱºò£¬´æÔÚ¶à¸öÖØÔØ·½·¨£¬ÎÒÃÇÀ´¿´Ò»Ï£º

send
ÔÚÉÏÃæµÄcodeµ±ÖУ¬ÎÒÃÇ´´½¨Éú²úÕßµÄʱºò£¬Ö¸¶¨ÁËDestination£¬ÉèÖÃÁ˳־û¯·½Ê½£¬Êµ¼ÊÉÏÕâЩ¶¼¿ÉÒÔ²»±ØÖ¸¶¨µÄ£¬¶øÊǵ½sendµÄʱºòÖ¸¶¨¡£¶øÇÒÔÚʵ¼ÊÒµÎñ¿ª·¢ÖУ¬ÍùÍù¸ù¾Ý¸÷ÖÖÅжϣ¬À´¾ö¶¨½«ÕâÌõÏûÏ¢·¢ÍùÄĸöQueue£¬Òò´ËÍùÍù²»»áÔÚMessageProducer´´½¨µÄʱºòÖ¸¶¨Destination¡£
TTL£¬ÏûÏ¢µÄ´æ»îʱ¼ä£¬Ò»¾ä»°£ºÉú²úÕßÉú²úÁËÏûÏ¢£¬Èç¹ûÏû·ÑÕß²»À´Ïû·Ñ£¬ÄÇôÕâÌõÏûÏ¢±£³Ö¶à¾ÃµÄÓÐЧÆÚ
priority£¬ÏûÏ¢ÓÅÏȼ¶£¬0-9¡£0-4ÊÇÆÕͨÏûÏ¢£¬5-9ÊǼӼ±ÏûÏ¢£¬ÏûϢĬÈϼ¶±ðÊÇ4¡£×¢Ò⣬ÏûÏ¢ÓÅÏȼ¶Ö»ÊÇÒ»¸öÀíÂÛÉϵĸÅÄ²¢²»Äܾø¶Ô±£Ö¤ÓÅÏȼ¶¸ßµÄÏûÏ¢Ò»¶¨±»Ïû·ÑÕßÓÅÏÈÏû·Ñ£¡Ò²¾ÍÊÇ˵ActiveMQ²¢²»Äܱ£Ö¤Ïû·ÑµÄ˳ÐòÐÔ£¡
deliveryMode£¬Èç¹û²»Ö¸¶¨£¬Ä¬ÈÏÊdz־û¯µÄÏûÏ¢¡£Èç¹û¿ÉÒÔÈÝÈÌÏûÏ¢µÄ¶ªÊ§£¬ÄÇô²ÉÓ÷dz־û¯µÄ·½Ê½£¬½«»á¸ÄÉÆÐÔÄÜ¡¢¼õÉÙ´æ´¢µÄ¿ªÏú¡£ |