¹ØÓÚJMS Message PendingµÄÎÊÌâ - ±à³ÌÈëÃÅÍø
t.dispatchAsync(Request.java:1046)
¡¡¡¡ ¡¡¡¡¡¡¡¡¡¡ at weblogic.jms.dispatcher.Request.dispatchAsync(Request.java:72)
¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡ at weblogic.jms.frontend.FEConsumer.receive(FEConsumer.java:557)
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ at weblogic.jms.frontend.FEConsumer.invoke(FEConsumer.java:806)
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ at weblogic.messaging.dispatcher.Request.wrappedFiniteStateMachine(Request.java:7 59)
¡¡¡¡¡¡ ¡¡¡¡¡¡¡¡ at weblogic.messaging.dispatcher.DispatcherServerRef.invoke(DispatcherServerRef.j ava:276)
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ at weblogic.messaging.dispatcher.DispatcherServerRef.handleRequest(DispatcherServ erRef.java:141)
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ at weblogic.messaging.dispatcher.DispatcherServerRef.access$000(DispatcherServerR ef.java:36)
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ at weblogic.messaging.dispatcher.DispatcherServerRef$2.run (DispatcherServerRef.ja va:112)
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ at weblogic.work.ExecuteThread.execute (ExecuteThread.java:209)
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ at weblogic.work.ExecuteThread.run (ExecuteThread.java:181)
ÏÖÔÚÎÒÃÇ¿´Ò»ÏÂWeblogic JMSµÄreceiveµÄ»ù±¾Á÷³Ì£¬¿´¿´Õâ¸öexceptionΪʲô»á±»Å׳öÀ´¡£ JMSConsumer.receive(long timewait)£¬¿Í»§¶Ë·¢ÆðreceiveÇëÇó£¬ÆäÖÐtimewait¿ÉÓпÉÎÞ£¬²»×öÖ¸¶¨ µÄ»°£¬ËµÃ÷ûÓпÉÓÃÏûÏ¢µ½´ïµÄ»°£¬ÎÒÃÇ»áÒ»Ö±µÈÏÂÈ¥¡£ÈçÒª²»×÷µÈ´ýµÄ»°£¬¿ÉÒÔʹÓÃreceiveNoWait() ¡£receive()Öлá¼ì²étimeoutÖµ£¬Èç¹ûûÓÐÖ¸¶¨timeout£¬ÄÇôLong.maxValue»á±»É趨³ÉÕâ¸ötimeout£¬ Èç¹ûtimeoutСÓÚ£°£¬¿Í»§¶Ë½«»áÊÕµ½Invalid TimeoutÒì³££¬½ÓÏÂÀ´ÇëÇó»á±»delegateµ½JMSSession¡£ | JMSSession.receiveMessage(consumer,timeout)£¬ÕâÀïtimeout»á±»ÖØмÆË㣬ȻºóÎÒÃǻᴴ½¨Ò»¸ö FEConsumerReceiveRequest¶ÔÏó¡£Õâ¸ö¶ÔÏóÖаüº¬¼ÆËãºóµÄtimeout£¬¼ÆËãºóµÄtimeoutÓ¦¸ÃÊǸö·Ç¸ºÖµ( ÉÏÃæµÄÒì³£¾ÍÊÇÕâÀïµÄ¼ÆËãµ¼Öµģ¬ÖÁÓÚΪʲô¿Í»§Ö¸¶¨µÄtimeoutΪ£±£¬¼ÆËãºóµÄtimeout±ä³ÉÁ˸ºÊý£¬ ´Ó¶øµ¼ÖÂÉÏÃæµÄÒì³££¬´Ó´úÂë²ãÃ棬¿´²»³öÓÐʲôÎÊÌâ)¡£FEConsumerReceiveRequest¶ÔÏó´´½¨ºó£¬ÓÉJMS FrontEnd Dispatcher¸ºÔð°ÑÇëÇ󽻸øºó¶ËµÄJMS Server£¬DispatcherÊÇWeblogic JMSÖÐÓÃÓÚ¸ºÔðÇëÇó´« ÊäµÄ£¬ËüÒÀÀµÓÚRJVM layer£¬ÕâÀï²»×ö׸Êö¡£ | RJVM layer, ¸ºÔðRMI socket²ãµÄÊý¾Ý·¢ËÍ | ¹ØÓÚJMS Message PendingµÄÎÊÌâ(3)ʱ¼ä:2011-10-02 blogjava fjinFEConsumer.receive(invocableRequest)£¬RJVM²ã´¦ÀíÍêsocketÊý¾Ýºó£¬ÇëÇó»á±»×ª¸øJMSConsumer£¬ JMSConsumerͨ¹ý״̬»ú(state machine)À´¿ØÖÆÇëÇó´¦Àí£¬Ã»Óйý¶àµÄÂß¼£¬Ëü»á»ùÓÚÊÕµ½µÄreceive request´´½¨Ò»¸öBEConsumerReceiveRequest¶ÔÏó£¬È»ºó°ÑÕâ¸öÇëÇóͨ¹ýJMS BackEnd Dispatcherת·¢¸ø BEConsumerImpl¡£Ö®ËùÒÔ´æÔÚFrontEnd £¯BackEnd Dispatcher£¬Ö÷Òª¿¼Âǵ½´¦ÀíÇëÇóµÄserverºÍqueueËù ÔڵIJ»ÊÇͬһserver¡£ | BEConsumerImpl.receive(request)£¬request½øÈëBEConsumerImplºó£¬ËüҲͨ¹ýstate machineÀ´¿ØÖÆ ÇëÇó´¦Àí£¬ÏÂÃæÁ½¸ö·½·¨ÔÚµ÷Óùý³ÌÖб»Ë³Ðòµ÷Ó㬠BEConsumerImpl.blockingReceiveStart(request)£¬ÕâÀïÊ×Ïȼì²étimeoutÖµ£¬È»ºóµ÷Óà QueueImpl.receive(...)´ÓqueueÖлñÈ¡message£¬receive()µÄ¾ßÌå²ÎÊýÈçÏ£¬°üÀ¨timeout, expression(¼´¼ì²éÌõ¼þ£¬ÎÒÃǶ¨ÒåµÄmessage selector¾ÍÔÚÆäÖÐ)¡£ BEConsumerImpl.blockingReceiveProcessMessage(request) BEConsumerImpl.blockingReceiveComplete(request) | QueueImpl.receive(expression,count,acknowledge,owner,timeout,started,userBlob)£¬ÕâÀï³ýÁË ×´Ì¬¼ì²é£¬Ã»ÓÐÆäËûÂß¼ |
ÁèÖڿƼ¼×¨ÒµÌṩ·þÎñÆ÷×âÓᢷþÎñÆ÷Íйܡ¢ÆóÒµÓʾ֡¢ÐéÄâÖ÷»úµÈ·þÎñ£¬¹«Ë¾ÍøÕ¾£ºhttp://www.lingzhong.cn ΪÁ˸ø¹ã´ó¿Í»§Á˽â¸ü¶àµÄ¼¼ÊõÐÅÏ¢£¬±¾¼¼ÊõÎÄÕÂÊÕ¼¯À´Ô´ÓÚÍøÂç,ÁèÖڿƼ¼×ðÖØÎÄÕÂ×÷ÕߵİæȨ£¬Èç¹ûÓÐÉæ¼°ÄãµÄ°æȨÓбØҪɾ³ýÄãµÄÎÄÕ£¬ÇëºÍÎÒÃÇÁªÏµ¡£ÒÔÉÏÐÅÏ¢ÓëÎÄÕÂÕýÎÄÊDz»¿É·Ö¸îµÄÒ»²¿·Ö,Èç¹ûÄúҪתÔر¾ÎÄÕÂ,Çë±£ÁôÒÔÉÏÐÅÏ¢£¬Ð»Ð»! |