JMS(Java Message Service)
¸Þ½Ã¡ ½Ã½ºÅÛÀº ÀÀ¿ëÇÁ·Î±×·¥ °£¿¡ ºñµ¿±âÀûÀ¸·Î ¸Þ½ÃÁö¸¦ ±³È¯ÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» Á¦°øÇØÁØ´Ù.
ºñÁî´Ï½º¿¡¼ ¸Þ½Ã¡ ¼ºñ½º¸¦ ÀÌ¿ëÇÏ·Á¸é MOM(Message Oriented Middleware)°¡ ÇÊ¿äÇÏ´Ù.
MOMÀº ¸Þ½ÃÁö¸¦ Àü´ÞÇÒ ¼ö ÀÖÀ¸¸ç, ¸Þ½ÃÁö Àü´ÞÀ» ºñµ¿±âÀûÀ¸·Î ó¸®ÇÒ ¼ö Àִ Ư¡ÀÌ ÀÖ´Â ½Ã½ºÅÛÀÌ´Ù.
JMS´Â °¢ ȸ»ç¿¡¼ ¸¸µç MOM ½Ã½ºÅÛÀÇ °øÅëÀûÀÎ ºÎºÐÀ» Ç¥ÁØÈÇÔÀ¸·Î½á °øÅëµÈ API¸¦ »ç¿ëÇÒ ¼ö ÀÖ°Ô ÇÑ´Ù.
À¥·ÎÁ÷ ¼¹ö´Â MOM ±â´ÉÀ» Á¦°øÇÑ´Ù.
¸Þ½Ã¡ ¼ºñ½º¸¦ ÀÌ¿ëÇÔÀ¸·Î½á ¾òÀ» ¼ö ÀÖ´Â ÀåÁ¡À¸·Î´Â Åë½ÅÀÌ ºñµ¿±âÀûÀ¸·Î ÀÌ·ïÁö±â ¶§¹®¿¡ Ŭ¶óÀ̾ðÆ®¿¡¼´Â ÀÛ¾÷ ¿©·¯ °³¸¦ ±â´Ù¸± ÇÊ¿ä ¾øÀÌ Ã³¸®ÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù.
¸Þ½Ã¡ ¼ºñ½º´Â ´ÙÀ½°ú °°Àº Á¾·ùÀÇ ¼ºñ½º¸¦ Á¦°øÇÑ´Ù.
P2P(Peer to Peer)
¿©·¯ °³ÀÇ Å¬¶óÀ̾ðÆ®(¸Þ½ÃÁö ¼¾´õ)¿¡¼ º¸³½ ¸Þ½ÃÁö¸¦ MOMÀÇ ¸Þ½ÃÁö Å¥(Message Queue)¿¡ Â÷·Ê´ë·Î ÀúÀåÇÑ ÈÄ, ¸Þ½ÃÁö ¸®½Ã¹ö(Message Receiver)°¡ Å¥ÀÇ ³»¿ëÀ» Çϳª¾¿ ÀÐ¾î µé¿© ó¸®ÇÒ ¼ö ÀÖ´Â ¹æ½ÄÀ» ¸»ÇÑ´Ù. ¸Þ½ÃÁö Å¥´Â ¸Þ½ÃÁö ¸®½Ã¹ö°¡ ¸Þ½ÃÁö¸¦ Àо ¶§±îÁö, ȤÀº À¯È¿ ½Ã°£ÀÌ °æ°úµÇ±â Àü±îÁö ¸Þ½ÃÁö¸¦ ÀúÀåÇÏ°Ô µÈ´Ù.
Pub/sub
¹ßÇàÀÚ/°¡ÀÔÀÚÀÇ ¾àÀÚÀÌ´Ù.
¸Þ½ÃÁö ¼¾´õ¿¡¼ ¸Þ½ÃÁö¸¦ MOM¿¡°Ô Àü´Þ(ÃâÆÇ)Çϸé, ÁÖÁ¦¿¡ µî·ÏµÈ Ŭ¶óÀ̾ðÆ®¿¡°Ô ¸Þ½ÃÁö°¡ Àü´Þ(±¸µ¶)µÇ´Â ¹æ½ÄÀ» ¸»ÇÑ´Ù.
JMS¶õ
MOMÀ» °øÅëÀûÀ¸·Î ÀÌ¿ëÇϱâ À§ÇÑ API
JMS API¸¦ ÀÌ¿ëÇϱâ À§Çؼ´Â JMS¸í¼¼¸¦ ¾Ë¾Æ¾ß ÇÑ´Ù.
JMS ¸í¼¼¿¡ µû¸£¸é JMS¸¦ ÀÌ¿ëÇÏ´Â ÀÀ¿ë ÇÁ·Î±×·¥Àº ´ÙÀ½°ú °°Àº ¿ä¼Ò·Î ±¸¼ºµÈ´Ù.
°¢°¢ÀÇ ¿ä¼Ò´Â API¿¡¼ Á¦°øÇÏ´Â °´Ã¼°¡ µÉ ¼öµµ ÀÖÀ¸¸ç ¾î¶² ºÎºÐÀº ÀÀ¿ë ÇÁ·Î±×·¥ÀÏ ¼ö ÀÖ´Ù.
¿î¿µµµ±¸(Administrative Tool)
Ä¿³Ø¼Ç ÆÑÅ丮(Connection Factories)
¸ñÀûÁö(Destinations)
Ä¿³Ø¼Ç(Connection)
¼¼¼Ç(Session)
¸Þ½ÃÁö »ý»êÀÚ(Message Producer)
¸Þ½ÃÁö ¼ÒºñÀÚ(Message consumer)
¸Þ½ÃÁö(Message)
¿î¿µµµ±¸
MOMÀ» ÀÌ¿ëÇؼ P2P³ª pub/sub ¹æ½ÄÀ¸·Î ¸Þ½ÃÁö¸¦ Àü´ÞÇÏ°í ¸Þ½ÃÁö¸¦ Àü´Þ ¹Þ±â À§ÇÑ API´Â JM
S¿¡¼ Á¦°øÇÏÁö¸¸ MOM ÀÚü¸¦ °ü¸®Çϱâ À§ÇÑ ¹æ¹ýÀº JMS¿¡¼ Á¦°øÇÏÁö ¾Ê´Â´Ù. ±×·¸±â ¶§¹®¿¡ MOMÀ» ¿î¿µÇÏ·Á¸é MOM¿¡¼ Á¦°øÇÏ´Â ¿î¿µµµ±¸¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù.
À¥·ÎÁ÷ ¼¹ö´Â MOMÀ» Æ÷ÇÔÇÑ´Ù°í Çߴµ¥, Æ÷ÇÔµÈ MOMÀ» »ç¿ëÇÏ·Á¸é À¥·ÎÁ÷ ¼¹ö¿¡¼ Á¦°øÇÏ´Â ±â´ÉÀ» ÀÌ¿ëÇØ¾ß ÇÑ´Ù. MOMÀ» ¿î¿µÇÑ´Ù´Â °ÍÀº ¸ñÀûÁö(destination)¸¦ ¼³Á¤Çϱâ À§Çؼ´Ù
¸ñÀûÁö¶ó´Â °ÍÀº P2P³ª pub/sub ¹æ½ÄÀ¸·Î ¸Þ½ÃÁö¸¦ ÁÖ°í ¹ÞÀ» ¶§ »ç¿ëÇϱâ À§ÇÑ ÀúÀå °ø°£À̶ó°í »ý°¢ÇÏ¸é µÈ´Ù.
Ä¿³Ø¼Ç ÆÑÅ丮
Ä¿³Ø¼Ç°ú °ü·ÃµÈ Á¤º¸¸¦ ÅëÇؼ Ä¿³Ø¼ÇÀ» »ý¼ºÇÒ ¼ö ÀÖ´Â ÀÎÅÍÆäÀ̽º¸¦ ¸»ÇÑ´Ù.
Ŭ¶óÀ̾ðÆ®´Â JNDI¸¦ ÀÌ¿ëÇÏ¿© Ä¿³Ø¼Ç ÆÑÅ丮(Connection Factory)¸¦ °Ë»öÇÑ ÈÄ JMS Ä¿³Ø¼ÇÀ» ¸¸µé°Ô µÇ´Âµ¥, P2P ¹æ½ÄÀÏ °æ¿ì¿¡´Â javax.jms.QueueConnectionFactory¸¦ »ç¿ëÇϸç, pub/sub ¹æ½ÄÀÏ °æ¿ì¿¡´Â javax.jms.TopicConnectionFactory ¸¦ »ç¿ëÇÑ´Ù.
À¥·ÎÁ÷ ¼¹ö´Â weblogic.jms.ConnectionFactory À̶ó´Â À̸§À¸·Î Ä¿³Ø¼Ç ÆÑÅ丮¸¦ Á¦°øÇϱ⠶§¹®¿¡, ¿øÇÏ´Â ÇüÅ·ΠÇü½ÄÀ» º¯È¯ÇÏ¿© »ç¿ëÇØ¾ß ÇÑ´Ù.
¸ñÀûÁö
À¥·ÎÁ÷ Äֿܼ¡¼ ¿î¿µµµ±¸¸¦ ÀÌ¿ëÇؼ ¸ñÀûÁö¸¦ »ý¼ºÇÏ°í JNDI¿¡ À̸§À» µî·ÏÇÏ°Ô µÈ´Ù.
±×·¯¸é ¸Þ½ÃÁö¸¦ MOM ¿¡°Ô Àü¼ÛÇÏ¸é ¸ñÀûÁö¿¡ ¸Þ½ÃÁö°¡ Àü´ÞµÈ´Ù.
Ä¿³Ø¼Ç
Ä¿³Ø¼ÇÀº JMS ¼ºñ½º Á¦°øÀÚ¿Í Å¬¶óÀ̾ðÆ® °£ÀÇ TCP/IP Ä¿³Ø¼ÇÀ» ÀǹÌÇϸç, ¼¼¼ÇÀ» »ý¼ºÇϱâ À§ÇØ »ç¿ëµÈ´Ù.
Ä¿³Ø¼ÇÀ» »ý¼ºÇÏ·Á¸é Ä¿³Ø¼Ç ÆÑÅ丮¿¡ ÀÖ´Â createQueueConnection() À̳ª createTopicConnection() ¸Þ¼Òµå¸¦ È£ÃâÇØ¾ß ÇÑ´Ù.
óÀ½ Ä¿³Ø¼ÇÀÌ »ý¼ºµÇ¸é Á¤Áö¸ðµå¿¡ ÀÖÀ¸¸ç, Á¤Áö ¸ðµåÀÏ °æ¿ì¿¡´Â ¸Þ½ÃÁö¸¦ Àü´ÞÇÒ ¼ö¸¸ ÀÖ°í ¹ÞÀ» ¼ö´Â ¾ø´Ù. Á¤Áö ¸ðµå¿¡¼ ½ÃÀÛ¸ðµå·Î ¹Ù²Ù·Á¸é ConnectionÀÇ start()¸Þ¼Òµå¸¦ »ç¿ëÇÏ°í, ¹Ý´ë·Î ´Ù½Ã Á¤ÁöÇÏ·Á¸é stop()¸Þ¼Òµå¸¦ ÀÌ¿ëÇÑ´Ù.
±×¸®°í Ä¿³Ø¼ÇÀÇ »ç¿ëÀÌ ³¡³µ´Ù¸é ¹Ýµå½Ã close()¸Þ¼Òµå¸¦ È£ÃâÇØ¾ß ÇÑ´Ù
¼¼¼Ç
¼¼¼ÇÀº Ŭ¶óÀ̾ðÆ®¿Í JMS¼¹ö °£¿¡ ¸Þ½ÃÁö¸¦ »ý¼ºÇÏ°í ¼ÒºñÇϱâ À§ÇÑ ´ÜÀÏ ½º·¹µå ȯ°æÀÌ´Ù.
P2P¹æ½Ä¿¡¼´Â javax.jms.QueueSessionÀ» pub/sub¹æ½Ä¿¡¼´Â javax.jms.TopicSessionÀ» »ç¿ëÇÑ´Ù.
¸Þ½ÃÁö »ý»êÀÚ
Ŭ¶óÀ̾ðÆ®¿¡¼ ¸Þ½ÃÁö¸¦ JMS¼¹ö¿¡ Àü´ÞÇÏ·Á¸é ¸Þ½ÃÁö »ý»êÀÚ(Message Producer)À» ÀÌ¿ëÇØ¾ß ÇÑ´Ù.
¸Þ½ÃÁö »ý»êÀÚ´Â ¼¼¼ÇÀ» ÅëÇؼ ¸¸µé¾î Áú ¼ö ÀÖ´Ù. P2P ¹æ½ÄÀÏ °æ¿ì¿¡´Â QueueSender¸¦, pub/sub ¹æ½ÄÀÏ °æ¿ì¿¡´Â TopicPublisher¸¦ ÅëÇؼ »ý¼ºÇÑ´Ù.
ÀÌ·¸°Ô »ý»êµÈ ¸Þ½ÃÁö »ý»êÀÚ¸¦ ÀÌ¿ëÇؼ, P2P¹æ½ÄÀÏ °æ¿ì¿¡´Â QueueSender¿¡ Æ÷ÇÔµÈ send()¸Þ¼Òµå¸¦ ÅëÇؼ, pub/sub ¹æ½ÄÀ» °æ¿ì¿¡´Â TopicPublisher¿¡ ÀÖ´Â publish()¸Þ¼Òµå¸¦ ÀÌ¿ëÇؼ ¸Þ½ÃÁö¸¦ Àü´Þ ÇÒ ¼ö ÀÖ´Ù.
¸Þ½ÃÁö ¼ÒºñÀÚ
Ŭ¶óÀ̾ðÆ®´Â JMS ¼¹ö·ÎºÎÅÍ ¸Þ½ÃÁö¸¦ ¹Þ¾ÆµéÀ̱â À§Çؼ ¸Þ½ÃÁö ¼ÒºñÀÚ(Message Consumer)¸¦ ÀÌ¿ëÇØ¾ß ÇÑ´Ù.
¸Þ½ÃÁö ¼ÒºñÀÚ´Â »ý»êÀÚ¿Í ¸¶Âù°¡Áö·Î ¼¼¼ÇÀ» ÅëÇؼ ¸¸µé¾îÁú ¼ö ÀÖ´Ù. P2P¹æ½ÄÀ» °æ¿ì¿¡´Â QueueReceiver¸¦, pub/sub¹æ½ÄÀÏ °æ¿ì¿¡´Â TopicSubscriber¸¦ ÅëÇؼ »ý¼ºÇÑ´Ù.
ÀÌ·¸°Ô »ý¼ºµÈ ¸Þ½ÃÁö ¼ÒºñÀÚ¸¦ ÀÌ¿ëÇؼ ¸Þ½ÃÁö¸¦ ¹Þ¾ÆµéÀÏ ¼ö Àִµ¥, µÎ °¡Áö ¸ðµÎ receive()¸Þ¼Òµå¸¦ ÀÌ¿ëÇؼ ¹Þ¾ÆµéÀδÙ.
¸Þ½ÃÁö¸¦ ¹Þ¾ÆµéÀÌ·Á¸é ¹Ýµå½Ã Ä¿³Ø¼ÇÀ» start()ÇÑ »óÅÂÀ̾î¾ß Çϸç, pub/sub ¹æ½ÄÀÏ °æ¿ì¿¡´Â ºñµ¿±â½ÄÀ¸·Î ¹Þ¾ÆµéÀ̱â À§Çؼ MessageListener ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÑ ÈÄ TopicSubscriber¿¡ ÀÖ´Â
setMessageListener()¿¡ µî·ÏÇÏ¸é µÈ´Ù.
¸Þ½ÃÁö
¸Þ½ÃÁö´Â ¸Þ½ÃÁö »ý»êÀÚ¿Í ¼ÒºñÀÚ °£¿¡ ±³È¯µÇ´Â µ¥ÀÌÅ͸¦ ¸»ÇÑ´Ù.
¸Þ½ÃÁö´Â Çì´õ(header), Ư¼º(property), ¸öü(body)·Î ±¸¼ºµÇ¾î ÀÖÀ¸¸ç ¾î¶°ÇÑ µ¥ÀÌÅÍ¶óµµ ¸öü¿¡ ´ã°Ü Àü¼ÛÇÒ ¼ö ÀÖ´Ù.
¸Þ½ÃÁöÀÇ Á¾·ù´Â ´ÙÀ½°ú °°´Ù.
¸Þ½ÃÁö | ¼³¸í |
TextMessage | ¹®ÀÚ¿ µ¥ÀÌÅÍ |
MapMessage | À̸§°ú °ªÀ¸·Î ±¸¼ºµÈ µ¥ÀÌÅÍ,À̸§Àº String, ³»¿ëÀº ÀÚ¹Ù ±âº»Çü |
BytesMessage | ¹ÙÀÌÆ® ½ºÆ®¸² µ¥ÀÌÅÍ |
StreamMessage | ÀÚ¹Ù ±âº»Çü µ¥ÀÌÅ͵鿡 ´ëÇÑ ½ºÆ®¸² |
ObjectMessage | ÀÚ¹Ù Á÷·ÄÈ °´Ã¼ |
Message | TextMessage,MapMessage,BytesMessage,StreamMessage,ObjectMessageÀÇ »óÀ§ ÀÎÅÍÆäÀ̽º·Î ¸öü°¡ ¾ø´Ù. |
P2P ¹æ½ÄÀÇ ¸Þ½Ã¡ ¼ºñ½º ¿¹Á¦
P2P¹æ½ÄÀÇ JMS ¿¹Á¦ ÇÁ·Î±×·¥ Å×½ºÆ®
¼ø¼
1. À¥·ÎÁ÷ ÄܼÖÀ» ÀÌ¿ëÇؼ »ç¿ëÇÒ ¸ñÀûÁö¸¦ »ý¼ºÇÑ´Ù.
2. Ä¿³Ø¼Ç,¼¼¼Ç,¸Þ½ÃÁö »ý»êÀÚ, ¸Þ½ÃÁö °´Ã¼¸¦ ÀÌ¿ëÇÑ ¸Þ½ÃÁö Àü¼Û ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´Ù.
3. ¸Þ½ÃÁö Àü¼Û ÇÁ·Î±×·¥À» ¿©·¯ ¹ø ½ÇÇàÇÑ´Ù.
4. Ä¿³Ø¼Ç,¼¼¼Ç,¸Þ½ÃÁö ¼ÒºñÀÚ, ¸Þ½ÃÁö °´Ã¼¸¦ ÀÌ¿ëÇؼ MOM ÀÇ ¸ñÀûÁö¿¡ ÀúÀåµÈ ¸Þ½ÃÁö¸¦ ÀÐ¾î µé¿© Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´Ù.
5. ¸Þ½ÃÁö¸¦ ÀÐ¾î µéÀÌ´Â ÇÁ·Î±×·¥À» ½ÇÇàÇؼ ÀúÀåµÈ ³»¿ëÀ» ÀÐ¾î¼ Ãâ·ÂÇÏ´ÂÁö È®ÀÎÇÑ´Ù.
¸ñÀûÁö »ý¼º
1. À¥·ÎÁ÷ Äֿܼ¡ ·Î±×ÀÎÇÑ ÈÄ ÁÂÃø ¸Þ´º¿¡¼ Services -> JMS ->Store À» ¼±ÅÃÇÑ ÈÄ ¿ìÃø ¸Þ´º¿¡¼
Configure a new JMS File Store ¸¦ Ŭ¸¯ÇÑ´Ù.
JMS ¼¹ö´Â ¸Þ½ÃÁö¸¦ ÀúÀåÇÒ °ø°£ÀÌ ÇÊ¿äÇѵ¥, ÀúÀåÇÒ °ø°£À¸·Î ÆÄÀϽýºÅÛÀ» ÀÌ¿ëÇÏ´Â °ÍÀÌ´Ù.
2. mydomain µð·ºÅ丮 ¾Æ·¡¿¡ ÆÄÀÏ ½ºÅä¾î°¡ »ç¿ëÇÒ µð·ºÅ丮¸¦ »ý¼ºÇÑ´Ù.
¿©±â¼´Â myjmsfilestore À̶ó´Â µð·ºÅ丮¸¦ ¸¸µç´Ù.
3. ÆÄÀÏ ½ºÅä¾î¿¡ ´ëÇÑ È¯°æÀ» ¼³Á¤ÇÑ´Ù.
µð·ºÅ丮¸í : myjmsfilestore
ÆÄÀϽºÅä¾î¸í: MyJMSFileStore
³ª¸ÓÁö´Â ±âº»°ªÀ¸·Î ÇÏ°í create ¹öÆ°À» Ŭ¸¯ÇÑ´Ù.
4. Apply ¹öÆ°À» Ŭ¸¯ÇÑ´Ù.
5. ÆÄÀÏ ½ºÅä¾î¸¦ »ý¼ºÇß´Ù¸é ÇØ´ç ÆÄÀÏ ½ºÅä¾î¸¦ »ç¿ëÇÏ´Â »õ·Î¿î JMS ¼¹ö¿¡ ´ëÇÑ È¯°æÀ» ¼³Á¤ÇØ¾ß ÇÑ´Ù.
ÁÂÃøÀÇ Ç׸ñ Áß Services ->JMS ->Servers Ç׸ñÀ» ¼±ÅÃÇÑ ÈÄ ¿ìÃø¸Þ´ºÀÇ Configure a new JMS Server Ç׸ñÀ» Ŭ¸¯ÇÑ´Ù.
6. JMS ¼¹ö ¼³Á¤È¸é¿¡¼
¼¹ö¸í : MyJMSFileStore
³ª¸ÓÁö´Â ±âº»°ªÀ¸·Î ³ªµÎ°í create ¹öÆ°À» Ŭ¸¯ÇÑ´Ù.
7. JMS ¼¹ö¿¡ ´ëÇÑ È¯°æ ¼³Á¤ÀÌ ³¡³ª¸é Target and Deploy ÅÇ¿¡¼ Target À» myserver·Î ÁöÁ¤ÇÑ ÈÄ
Apply ¹öÆ°À» Ŭ¸¯ÇÑ´Ù.
8. ¼¹ö¿¡ ´ëÇÑ ¼³Á¤ÀÌ ³¡³ª¸é ¸ñÀûÁö¸¦ »ý¼ºÇØ¾ß ÇÑ´Ù. Services ->JMS->Servers->Destinations Ç׸ñÀ» ¼±ÅÃÇÑ´Ù.
9. ¿ìÃø¸Þ´º¿¡¼ Configure a new JMS Queue ¸¦ Ŭ¸¯ÇÑ´Ù.
10. JMS Queue ¿¡ ´ëÇÑ ¼³Á¤ ȸéÀÌ ³ª¿À¸é
Name : MyJMSQueue
JNDI Name : jmsqueue
·Î ÁöÁ¤ÇÑ´Ù.
11. »õ·Î¿î JMS Å¥¿¡ ´ëÇÑ ¼³Á¤ÀÌ ³¡³ª¸é ÁÂÃø¸Þ´º¿¡¼ MyJMSQueue ¶ó´Â À̸§ÀÇ JMS Å¥°¡ »ý¼ºµÈ °ÍÀ» È®ÀÎ ÇÒ ¼ö ÀÖ´Ù.
»õ·Î¿î ȯ°æÀ» Àû¿ëÇϱâ À§Çؼ À¥·ÎÁ÷ ¼¹ö¸¦ Àç½ÃÀÛ ÇÑ´Ù.
¸Þ½ÃÁö Àü¼Û ÇÁ·Î±×·¥ ÀÛ¼º
JMS¼¹ö·Î Àü¼ÛÇϱâ À§ÇÑ MessageQueueSender.java ÆÄÀÏÀ» ÀÛ¼ºÇÑ´Ù.
import java.io.*;
import javax.jms.*;
import javax.naming.*;
import java.util.Properties;
public class MessageQueueSender {
public static void main(String args[]) {
if(args.length != 1){
System.out.println("»ç¿ë¹ý : java MessageQueueSender Àü¼ÛÇÒ ¸Þ½ÃÁö");
System.exit(0);
}
try {
Properties h = new Properties();
h.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
h.put(Context.PROVIDER_URL, "t3://localhost:7001");
Context ctx = new InitialContext(h);
QueueConnectionFactory factory = (QueueConnectionFactory)ctx.lookup("weblogic.jms.ConnectionFactory");
Queue queue = (Queue)ctx.lookup("jmsqueue");
QueueConnection con = factory.createQueueConnection();
QueueSession session = con.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);
QueueSender qsender = session.createSender(queue);
TextMessage message = session.createTextMessage();
message.setText(args[0]);
qsender.send(message);
qsender.send(session.createMessage());
con.close();
}catch(Exception ex){
System.out.println(ex);
}
}
}
¸Þ½ÃÁö Ãâ·Â ÇÁ·Î±×·¥ ÀÛ¼º
JMS ¼¹ö·ÎºÎÅÍ ¸Þ½ÃÁö¸¦ Àü´Þ¹Þ±â À§ÇÑ MessageQueueReceiver.java ÆÄÀÏÀ» ÀÛ¼ºÇÑ´Ù.
import java.io.*;
import javax.jms.*;
import javax.naming.*;
import java.util.Properties;
public class MessageQueueReceiver {
public static void main(String args[]){
try{
Properties h = new Properties();
h.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
h.put(Context.PROVIDER_URL,"t3://localhost:7001");
Context ctx = new InitialContext(h);
QueueConnectionFactory factory = (QueueConnectionFactory)ctx.lookup("weblogic.jms.ConnectionFactory");
Queue queue = (Queue)ctx.lookup("jmsqueue");
QueueConnection con = factory.createQueueConnection();
QueueSession session = con.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);
QueueReceiver qreceiver = session.createReceiver(queue);
con.start();
while(true){
Message msg = qreceiver.receive(1);
if(msg != null){
if(msg instanceof TextMessage) {
TextMessage tmpMsg = (TextMessage)msg;
System.out.println("Àоî¿Â ¸Þ½ÃÁö: " + tmpMsg.getText());
}
}else
break;
}
con.close();
}catch(Exception ex){
System.out.println(ex);
}
}
}
ÇÁ·Î±×·¥ ½ÇÇà°ú Å×½ºÆ®
MessageQueueSender¸¦ ¿©·¯ ¹ø ½ÇÇàÇÏ°í ³ ÈÄ, MessageQueueReceiver ¸¦ ½ÇÇàÇÑ´Ù.
MessageQueueReceiver°¡ MOM¿¡ ÀúÀåµÈ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ´ÂÁö È®ÀÎÇÑ´Ù.
pub/sub ¹æ½ÄÀÇ ¸Þ½Ã¡ ¼ºñ½º ¿¹Á¦
pub/sub ¹æ½ÄÀÇ JMS ¿¹Á¦ ÇÁ·Î±×·¥ÀÇ ÀÛ¼º ¼ø¼
1. À¥·ÎÁ÷ ÄܼÖÀ» ÀÌ¿ëÇؼ »ç¿ëÇÒ ¸ñÀûÁö »ý¼º
2. Ä¿³Ø¼Ç, ¼¼¼Ç, ÅäÇÈ ±¸µ¶ÀÚ, ¸Þ½ÃÁö °´Ã¼¸¦ ÀÌ¿ëÇؼ ÁöÁ¤ÇÑ ¸ñÀûÁö·ÎºÎÅÍ ¸Þ½ÃÁö¸¦ Àоî¿À´Â ÇÁ·Î±×·¥ ÀÛ¼º
3. ¸Þ½ÃÁö¸¦ ÀÐ¾î ¿À±â À§ÇÑ ÇÁ·Î±×·¥ 2°³ ÀÌ»ó ½ÇÇà
4. Ä¿³Ø¼Ç, ¼¼¼Ç, ÅäÇÈ ¹ßÇàÀÚ, ¸Þ½ÃÁö °´Ã¼¸¦ ÀÌ¿ëÇؼ MOM ÀÇ ¸ñÀûÁö¿¡ ¸Þ½ÃÁö¸¦ ¹ßÇàÇÏ´Â ÇÁ·Î±×·¥ ÀÛ¼º
5. ¸Þ½ÃÁö¸¦ Àü¼Û(¹ßÇà)Çϱâ À§ÇÑ ÇÁ·Î±×·¥ ½ÇÇà
6. ¸Þ½ÃÁö¸¦ Àоî¿À±â À§Çؼ ´ë±âÇÏ°í ÀÖ´ø ÇÁ·Î±×·¥ 2°³ ÀÌ»óÀÌ ¹ßÇàµÈ ¸Þ½ÃÁö¸¦ Àоî Ãâ·ÂÇÏ´ÂÁö È®ÀÎ
¸ñÀûÁö »ý¼º
1. pub/sub ¹æ½ÄÀ» ÀÌ¿ëÇÏ·Á¸é ¸ÕÀú À¥·ÎÁ÷ Äֿܼ¡¼ ÅäÇÈ¿¡ ´ëÇÑ ¸ñÀûÁö¸¦ »ý¼ºÇØ¾ß ÇÑ´Ù.
MyJMSServer ¾Æ·¡ÀÇ Destinations ¸Þ´º¸¦ ¼±ÅÃÇÑ ÈÄ Configure a new JMS Topic À» Ŭ¸¯ÇÑ´Ù.
2. JMS ÅäÇÈ ¸ñÀûÁö¿¡ ´ëÇÑ ¼³Á¤À» ÇÑ´Ù. À̸§Àº MyJMSTopic, JNDI ¸íÀº jmstopic À¸·Î ÁöÁ¤ÇÑ ÈÄ create ¹öÆ°À» Ŭ¸¯ÇÑ´Ù.
¸Þ½ÃÁö Àü¼Û ÇÁ·Î±×·¥ ÀÛ¼º
JMS¼¹ö·ÎºÎÅÍ ºñµ¿±âÀûÀ¸·Î ¸Þ½ÃÁö¸¦ ÀÐ¾î µéÀÌ´Â MessageTopicSubscriber.java ÆÄÀÏÀ» ÀÛ¼ºÇÑ´Ù.
import java.io.*;
import javax.jms.*;
import javax.naming.*;
import java.util.Properties;
public class MessageTopicSubscriber {
public static void main(String args[]){
try{
Properties h = new Properties();
h.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
h.put(Context.PROVIDER_URL,"t3://localhost:7001");
Context ctx = new InitialContext(h);
TopicConnectionFactory factory = (TopicConnectionFactory)ctx.lookup("weblogic.jms.ConnectionFactory");
Topic topic = (Topic)ctx.lookup("jmstopic");
TopicConnection con = factory.createTopicConnection();
TopicSession session = con.createTopicSession(false,Session.AUTO_ACKNOWLEDGE);
TopicSubscriber subscriber = session.createSubscriber(topic);
subscriber.setMessageListener(new MessageListener(){
public void onMessage(Message message){
try{
if(message instanceof TextMessage){
TextMessage m = (TextMessage)message;
System.out.println(m.getText());
}
}catch(Exception e){
System.out.println(e.toString());
}
}
});
con.start();
while(true){
char c = (char)System.in.read();
if(c == 'q')
break;
}
con.close();
}catch(Exception ex){
System.out.println(ex);
}
}
}
¸Þ½ÃÁö Ãâ·Â ÇÁ·Î±×·¥ ÀÛ¼º
JMS ¼¹ö¿¡°Ô ¸Þ½ÃÁö¸¦ pub/sub ¹æ½ÄÀ¸·Î Àü´ÞÇϱâ À§ÇÑ MessageTopicPublisher.java ÆÄÀÏÀ» ÀÛ¼ºÇÑ´Ù.
import java.io.*;
import javax.jms.*;
import javax.naming.*;
import java.util.Properties;
public class MessageTopicPublisher {
public static void main(String args[]) {
if(args.length!=1){
System.out.println("»ç¿ë¹ý : java MessageTopicPublisher Àü¼ÛÇÒ ¸Þ½ÃÁö");
System.exit(0);
}
try{
Properties h = new Properties();
h.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
h.put(Context.PROVIDER_URL,"t3://localhost:7001");
Context ctx = new InitialContext(h);
TopicConnectionFactory factory = (TopicConnectionFactory)ctx.lookup("weblogic.jms.ConnectionFactory");
Topic topic = (Topic)ctx.lookup("jmstopic");
TopicConnection con = factory.createTopicConnection();
TopicSession session = con.createTopicSession(false,Session.AUTO_ACKNOWLEDGE);
TopicPublisher publisher = session.createPublisher(topic);
TextMessage message = session.createTextMessage();
message.setText(args[0]);
publisher.publish(message);
con.close();
}catch(Exception ex){
System.out.println(ex);
}
}
}
ÇÁ·Î±×·¥ ½ÇÇà°ú Å×½ºÆ®
âÀ» 2°³ ÀÌ»ó ¿¾î¼ °¢°¢ MessageTopicSubscriber¸¦ ½ÇÇàÇÑ´Ù.
»õâÀ» ¿¾î¼ MessageTopicPublisher ¸¦ ½ÇÇàÇÑ ÈÄ MessageTopicSubscriber ½ÇÇàâ¿¡¼ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ´ÂÁö È®ÀÎÇÑ´Ù.
[Ãâó] [weblogic]4.JMS(Java Message Service)|ÀÛ¼ºÀÚ Çǽ¬