<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 找個美女做老婆 閱讀(2537) 評論(0)  編輯  收藏


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


    網站導航:
     

    導航

    統計

    公告

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

    常用鏈接

    留言簿(6)

    隨筆檔案

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲AV成人噜噜无码网站| 亚洲三级在线视频| 十八禁的黄污污免费网站| 免费无码又爽又刺激高潮| 亚洲成a人不卡在线观看| 精品无码国产污污污免费网站| 亚洲AV无码国产精品麻豆天美| 视频免费在线观看| 亚洲国产精品无码专区| 国产高清不卡免费视频| 亚洲欧洲日产国产综合网| 在线免费观看国产| 亚洲天堂2016| 成在线人永久免费视频播放| 色偷偷亚洲第一综合网| jjzz亚洲亚洲女人| 91av免费在线视频| 无码乱人伦一区二区亚洲一| 69视频免费在线观看| 亚洲高清中文字幕免费| 国产免费av一区二区三区| 亚洲午夜精品在线| 亚洲国产成人片在线观看| 亚洲AV无码成人精品区大在线| 成年男女免费视频网站| 亚洲成?v人片天堂网无码| 亚洲欧洲久久av| 亚洲永久永久永久永久永久精品| 国产v亚洲v天堂a无| 美女视频黄频a免费观看| 18禁超污无遮挡无码免费网站 | 日本免费无遮挡吸乳视频电影| 色妞WWW精品免费视频| 狠狠色伊人亚洲综合成人| 色屁屁www影院免费观看视频| 亚洲欧洲日产国码无码网站| 88xx成人永久免费观看| 欧美亚洲精品一区二区| 亚洲女久久久噜噜噜熟女| 男的把j放进女人下面视频免费| GOGOGO免费观看国语|