ÃֽŠ°Ô½Ã±Û(JAVA)
2017.06.12 / 13:57

JMS(Java Message Service)

Ŭ·¡½Ä·Î¾â
Ãßõ ¼ö 219

JMS(Java Message Service)


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 ½ÇÇàâ¿¡¼­ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ´ÂÁö È®ÀÎÇÑ´Ù.