<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java學習

    java,spring,structs,hibernate,jsf,ireport,jfreechart,jasperreport,tomcat,jboss -----本博客已經搬家了,新的地址是 http://www.javaly.cn 如果有對文章有任何疑問或者有任何不懂的地方,歡迎到www.javaly.cn (Java樂園)指出,我會盡力幫助解決。一起進步

     

    JMS(Jboss Messaging)的一點使用心得(十三)拔網線后的重連----JMS Connection原理淺析及應用(zhuan)

    在前面的文章里,我們介紹了可以自動重連的JmsMessageListenerContainer,自動重連的原理就是利用了JMS Connction的ExceptionListen機制。現在我們討論一下Jms Connection的簡單原理及應用。
        Jboss Messaging管理了兩組Connection,Server端的和Client端的;其實他們都是一個東西,因為連接都是相互的嘛。
        Server端的Connection管理是利用 [org.jboss.jms.server.connectionfactory.ConnectionFactory]實現的,大家可以在[\ jboss-4.2.2.GA\server\messaging1.4SP3\deploy\jboss-messaging.sar\connection -factories-service.xml]里配置它,大家也可以通過源碼來研究。不管是Serber端還是Client端都從這個Factory里 面拿Jms Connection。
        另外,對Client的Jms Connction還有一個設置,就是[org.jboss.remoting.transport.Connector]的設置,它配置在[\ jboss-4.2.2.GA\server\messaging1.4SP3\deploy\jboss-messaging.sar\remoting -bisocket-service.xml]里。
        根據Jboss Messaging的默認配置,Server端Jms Connection的每隔30秒會去Check一下所有的JMS 連接,如果發現連接錯誤,則該連接就會被回收,以提供給其他的Client端使用。這樣做是為了避免出現大量無用連接而耗費系統資源。而Client端的 連接自動Check間隔為5分鐘,就是說如果直到Client端和Server端的連接斷掉5分鐘后,才會觸發Client端Jms Connection的onException。
        這樣就會出現一種可能,假如Client端和Server端的網線中斷時間在30秒~5分鐘之間,Server端已經回收了該連接,而Client卻認為這個連接仍然OK,那Client端就永遠收不到Jms消息了...
         我們可以通過修改設置來解決這個問題。首先看看Server端,考慮到Server端的性能和穩定性,我們決定不做修改。只有改Client端了。如果我 們讓Client的連接Check時間小于或者等于30秒,比如說29秒,就可以解決這個問題。于是我們可以做以下修改:
    1. connection-factories-service.xml
    <?xml version="1.0" encoding="UTF-8"?>

    <!--
         Messaging Connection Factories deployment descriptor.

         $Id: connection-factories-service.xml 3201 2007-10-19 10:39:50Z timfox $
     
    -->

    <server>

       
    <!-- The default connection factory does not support automatic failover or load balancing-
            this is so we can maintain compatiblity with applications written for JBoss MQ which use this
            connection factory.
       
    -->     
       
    <mbean code="org.jboss.jms.server.connectionfactory.ConnectionFactory"
          name
    ="jboss.messaging.connectionfactory:service=ConnectionFactory"
          xmbean-dd
    ="xmdesc/ConnectionFactory-xmbean.xml">
          
    <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
          
    <depends optional-attribute-name="Connector">jboss.messaging:service=Connector,transport=bisocket</depends>
          
    <depends>jboss.messaging:service=PostOffice</depends>

          
    <attribute name="SupportsFailover">true</attribute>
          
    <!--不需要系統接管RemotingCheck-->
          
    <attribute name="DisableRemotingChecks">true</attribute>
          
          
    <attribute name="JNDIBindings">
             
    <bindings>
                
    <binding>/ConnectionFactory</binding>
                
    <binding>/XAConnectionFactory</binding>
                
    <binding>java:/ConnectionFactory</binding>
                
    <binding>java:/XAConnectionFactory</binding>
             
    </bindings>
          
    </attribute>
       
    </mbean>

       
    <!-- A clustered connection factory that supports automatic failover and load balancing of created
            connections.
            This factory is not suitable to be used by MDBs.
       
    -->
       
    <mbean code="org.jboss.jms.server.connectionfactory.ConnectionFactory"
          name
    ="jboss.messaging.connectionfactory:service=ClusteredConnectionFactory"
          xmbean-dd
    ="xmdesc/ConnectionFactory-xmbean.xml">
          
    <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
          
    <depends optional-attribute-name="Connector">jboss.messaging:service=Connector,transport=bisocket</depends>
          
    <depends>jboss.messaging:service=PostOffice</depends>
          
    <attribute name="DisableRemotingChecks">true</attribute>

          
    <attribute name="JNDIBindings">
             
    <bindings>
                
    <binding>/ClusteredConnectionFactory</binding>
                
    <binding>/ClusteredXAConnectionFactory</binding>
                
    <binding>java:/ClusteredConnectionFactory</binding>
                
    <binding>java:/ClusteredXAConnectionFactory</binding>
             
    </bindings>
          
    </attribute>

          
    <attribute name="SupportsFailover">true</attribute>
          
    <attribute name="SupportsLoadBalancing">true</attribute>      
       
    </mbean>
       
       
    <!-- A connection factory with no JNDI bindings that is used in clustering to create the connections that
            pull messages from one node to another
       
    -->
       
    <mbean code="org.jboss.jms.server.connectionfactory.ConnectionFactory"
          name
    ="jboss.messaging.connectionfactory:service=ClusterPullConnectionFactory"
          xmbean-dd
    ="xmdesc/ConnectionFactory-xmbean.xml">
          
    <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
          
    <depends optional-attribute-name="Connector">jboss.messaging:service=Connector,transport=bisocket</depends>
          
    <depends>jboss.messaging:service=PostOffice</depends>
          
    <attribute name="SupportsFailover">false</attribute>
          
    <attribute name="SupportsLoadBalancing">false</attribute>
          
    <attribute name="DisableRemotingChecks">true</attribute>
       
    </mbean>
       
       
    <!-- An example connection factory with all attributes shown 
       
       <mbean code="org.jboss.jms.server.connectionfactory.ConnectionFactory"
          name="jboss.messaging.connectionfactory:service=MyExampleConnectionFactory"
          xmbean-dd="xmdesc/ConnectionFactory-xmbean.xml">
          
          <constructor>
          
             <!- - You can specify the default Client ID to use for connections created using this factory - -> 
             
             <arg type="java.lang.String" value="MyClientID"/>
             
          </constructor>
          
          <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
          
          <!- - The transport to use - can be bisocket, sslbisocket or http - ->
          
          <depends optional-attribute-name="Connector">jboss.messaging:service=Connector,transport=http</depends>
          
          <depends>jboss.messaging:service=PostOffice</depends>
          
          <!- - PrefetchSize determines the approximate maximum number of messages the client consumer will buffer locally - ->
          
          <attribute name="PrefetchSize">150</attribute>
          
          <!- - Paging params to be used for temporary queues - ->
          
          <attribute name="DefaultTempQueueFullSize">200000</attribute>
          
          <attribute name="DefaultTempQueuePageSizeSize">2000</attribute>
          
          <attribute name="DefaultTempQueueDownCacheSize">2000</attribute>
          
          <!- - The batch size to use when using the DUPS_OK_ACKNOWLEDGE acknowledgement mode - ->
          
          <attribute name="DupsOKBatchSize">5000</attribute>
          
          <!- - Does this connection factory support automatic failover? - ->
          
          <attribute name="SupportsFailover">false</attribute>
          
          <!- - Does this connection factory support automatic client side load balancing? - ->
          
          <attribute name="SupportsLoadBalancing">false</attribute>  
                
          <!- - The class name of the factory used to create the load balancing policy to use on the client side - ->
          
          <attribute name="LoadBalancingFactory">org.jboss.jms.client.plugin.RoundRobinLoadBalancingFactory</attribute>  

          <!- - Whether we should be strict TCK compliant, i.e. how we deal with foreign messages, defaults to false- ->

          <attribute name="StrictTck">true</attribute>
          
          <!- - Disable JBoss Remoting Connector sanity checks - There is rarely a good reason to set this to true - ->
          
          <attribute name="DisableRemotingChecks">false</attribute>

          <!- - The connection factory will be bound in the following places in JNDI - ->

          <attribute name="JNDIBindings">
          
             <bindings>
             
                <binding>/acme/MyExampleConnectionFactory</binding>
                
                <binding>/acme/MyExampleConnectionFactoryDupe</binding>
                
                <binding>java:/xyz/CF1</binding>
                
                <binding>java:/connectionfactories/acme/connection_factory</binding>
                
             </bindings>
             
          </attribute>   
           
       </mbean>
       
       
    -->

    </server>

    2. remoting-bisocket-service.xml
    <?xml version="1.0" encoding="UTF-8"?>

    <!--
         Standard bisocket-based Remoting service deployment descriptor.

         $Id: remoting-bisocket-service.xml 3409 2007-12-04 21:32:54Z timfox $
     
    -->

    <server>

       
    <!-- Standard bisocket connector - the bisocket transport only opens connection from client->server
            so can be used with firewalls where only outgoing connections are allowed.
            For examples of HTTP and SSL transports see docs/examples 
    -->
       
    <mbean code="org.jboss.remoting.transport.Connector"
              name
    ="jboss.messaging:service=Connector,transport=bisocket"
              display-name
    ="Bisocket Transport Connector">
          
    <attribute name="Configuration">
             
    <config>
                
    <invoker transport="bisocket">
                
                   
    <!-- There should be no reason to change these parameters - warning!
                        Changing them may stop JBoss Messaging working correctly 
    -->            
                   
    <attribute name="marshaller" isParam="true">org.jboss.jms.wireformat.JMSWireFormat</attribute>
                   
    <attribute name="unmarshaller" isParam="true">org.jboss.jms.wireformat.JMSWireFormat</attribute>
                   
    <attribute name="dataType" isParam="true">jms</attribute>
                   
    <attribute name="socket.check_connection" isParam="true">false</attribute>
                   
    <!--把Timeout時間修改為29秒,小于30秒-->
                   
    <attribute name="timeout" isParam="true">29000</attribute>
                   
    <attribute name="serverBindAddress">${jboss.bind.address}</attribute>
                   
    <attribute name="serverBindPort">4457</attribute>
                   
    <attribute name="clientSocketClass" isParam="true">org.jboss.jms.client.remoting.ClientSocketWrapper</attribute>
                   
    <attribute name="serverSocketClass">org.jboss.jms.server.remoting.ServerSocketWrapper</attribute>
                   
    <attribute name="numberOfCallRetries" isParam="true">1</attribute>
                   
    <attribute name="pingFrequency" isParam="true">214748364</attribute>
                   
    <attribute name="pingWindowFactor" isParam="true">10</attribute>
                   
    <attribute name="onewayThreadPool">org.jboss.jms.server.remoting.DirectThreadPool</attribute>
                   
    <!-- End immutable parameters -->
                   
                   
    <!-- Periodicity of client pings. Server window by default is twice this figure -->                               
                   
    <attribute name="clientLeasePeriod" isParam="true">10000</attribute>

                   
    <!-- Number of seconds to wait for a connection in the client pool to become free -->
                   
    <attribute name="numberOfRetries" isParam="true">10</attribute>

                   
    <!-- Max Number of connections in client pool. This should be significantly higher than
                        the max number of sessions/consumers you expect 
    -->
                   
    <attribute name="JBM_clientMaxPoolSize" isParam="true">200</attribute>
                   
                   
    <!-- Use these parameters to specify values for binding and connecting control connections to 
                        work with your firewall/NAT configuration
                   <attribute name="secondaryBindPort">xyz</attribute>                           
                   <attribute name="secondaryConnectPort">abc</attribute>               
                   
    -->
                              
                
    </invoker>
                
    <handlers>
                   
    <handler subsystem="JMS">org.jboss.jms.server.remoting.JMSServerInvocationHandler</handler>
                
    </handlers>
             
    </config>
          
    </attribute>
       
    </mbean>

    </server>

    問題解決。OK! 

    posted on 2008-09-25 17:33 找個美女做老婆 閱讀(2540) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    公告

    本blog已經搬到新家了, 新家:www.javaly.cn
     http://www.javaly.cn

    常用鏈接

    留言簿(6)

    隨筆檔案

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 一级毛片不卡免费看老司机| 亚洲一级毛片免费看| a级毛片免费网站| 99久久免费看国产精品| 最新69国产成人精品免费视频动漫 | 亚洲国产精品特色大片观看完整版| 亚洲a∨无码男人的天堂| 大片免费观看92在线视频线视频| 最近中文字幕高清免费中文字幕mv| 全部免费毛片免费播放| 亚洲欧洲日产专区| 中文在线日本免费永久18近| 日本媚薬痉挛在线观看免费| 亚洲一区二区影院| 在线免费播放一级毛片 | 小说区亚洲自拍另类| 8x成人永久免费视频| 亚洲国产精品综合久久久| 日韩av无码成人无码免费| 亚洲最大的成网4438| 在线视频免费观看高清| 亚洲av无码成人黄网站在线观看| 一区视频免费观看| 国产精品久久久亚洲| h在线观看视频免费网站| 亚洲色少妇熟女11p| 成年女人色毛片免费看| 亚洲国产高清美女在线观看| 毛片网站免费在线观看| 免费一级毛片在线播放视频免费观看永久 | 国产精彩免费视频| 亚洲视频免费在线看| 久久成人免费播放网站| 久久精品九九亚洲精品天堂| 30岁的女人韩剧免费观看| 亚洲系列国产精品制服丝袜第| 久久青草精品38国产免费| 四虎亚洲精品高清在线观看| 无码人妻久久一区二区三区免费丨| 亚洲国产av玩弄放荡人妇| 永久黄网站色视频免费直播|