2013-08-23 49 views
-1

我得到了我的ActiveMQ配置文件和我的騾子與流「JMS:的ActiveMQ連接器」是這樣的:如何測試這個故障ActiveMQ的隊列情況下

<jms:activemq-connector name="Active_MQ" specification="1.1" brokerURL="failover://(tcp://localhost:61616,tcp://localhost:61617)?randomize=false" validateConnections="false" maxRedelivery="1" doc:name="Active MQ"/> 

這是我activemq.xml中

<beans 
    xmlns="http://www.springframework.org/schema/beans" 
    xmlns:amq="http://activemq.apache.org/schema/core" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd"> 

    <!-- Allows us to use system properties as variables in this configuration file --> 
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
     <property name="locations"> 
      <value>file:${activemq.conf}/credentials.properties</value> 
     </property> 
    </bean> 

    <!-- 
     The <broker> element is used to configure the ActiveMQ broker. 
    --> 
    <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}" persistent="false"> 

     <!-- 
      For better performances use VM cursor and small memory limit. 
      For more information, see: 

      http://activemq.apache.org/message-cursors.html 

      Also, if your producer is "hanging", it's probably due to producer flow control. 
      For more information, see: 
      http://activemq.apache.org/producer-flow-control.html 
     --> 
     <destinations> 
      <queue physicalName="Example.Queue"/> 
     </destinations> 

     <destinationPolicy> 
      <policyMap> 
       <policyEntries> 
       <policyEntry topic=">" producerFlowControl="true"> 
        <!-- The constantPendingMessageLimitStrategy is used to prevent 
         slow topic consumers to block producers and affect other consumers 
         by limiting the number of messages that are retained 
         For more information, see: 

         http://activemq.apache.org/slow-consumer-handling.html 

        --> 
        <pendingMessageLimitStrategy> 
        <constantPendingMessageLimitStrategy limit="1000"/> 
        </pendingMessageLimitStrategy> 
       </policyEntry> 
       <policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb" useCache="true"> 
        <!-- Use VM cursor for better latency 
         For more information, see: 

         http://activemq.apache.org/message-cursors.html 

        <pendingQueuePolicy> 
        <vmQueueCursor/> 
        </pendingQueuePolicy> 
        --> 
       </policyEntry> 
       </policyEntries> 
      </policyMap> 
     </destinationPolicy> 


     <!-- 
      The managementContext is used to configure how ActiveMQ is exposed in 
      JMX. By default, ActiveMQ uses the MBean server that is started by 
      the JVM. For more information, see: 

      http://activemq.apache.org/jmx.html 
     --> 
     <managementContext> 
      <managementContext createConnector="false"/> 
     </managementContext> 

     <!-- 
      Configure message persistence for the broker. The default persistence 
      mechanism is the KahaDB store (identified by the kahaDB tag). 
      For more information, see: 

      http://activemq.apache.org/persistence.html 
     --> 
     <persistenceAdapter> 
      <kahaDB directory="${activemq.data}/kahadb" cleanupInterval="30000"/> 
     </persistenceAdapter> 


      <!-- 
      The systemUsage controls the maximum amount of space the broker will 
      use before slowing down producers. For more information, see: 
      http://activemq.apache.org/producer-flow-control.html 
      If using ActiveMQ embedded - the following limits could safely be used: 

     <systemUsage> 
      <systemUsage> 
       <memoryUsage> 
        <memoryUsage limit="20 mb"/> 
       </memoryUsage> 
       <storeUsage> 
        <storeUsage limit="1 gb"/> 
       </storeUsage> 
       <tempUsage> 
        <tempUsage limit="100 mb"/> 
       </tempUsage> 
      </systemUsage> 
     </systemUsage> 
     --> 
      <systemUsage> 
      <systemUsage> 
       <memoryUsage> 
        <memoryUsage limit="64 mb"/> 
       </memoryUsage> 
       <storeUsage> 
        <storeUsage limit="100 gb"/> 
       </storeUsage> 
       <tempUsage> 
        <tempUsage limit="50 gb"/> 
       </tempUsage> 
      </systemUsage> 
     </systemUsage> 

     <!-- 
      The transport connectors expose ActiveMQ over a given protocol to 
      clients and other brokers. For more information, see: 

      http://activemq.apache.org/configuring-transports.html 
     --> 
     <transportConnectors> 
      <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB --> 
      <transportConnector uri="tcp://localhost:61617?maximumConnections=1000&amp;wireformat.maxFrameSize=104857600"/> 
      <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireformat.maxFrameSize=104857600"/> 
      <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireformat.maxFrameSize=104857600"/> 
     </transportConnectors> 

     <!-- destroy the spring context on shutdown to stop jetty --> 
     <shutdownHooks> 
      <bean xmlns="http://www.springframework.org/schema/beans" class="org.apache.activemq.hooks.SpringContextHook" /> 
     </shutdownHooks> 

    </broker> 

    <!-- 
     Enable web consoles, REST and Ajax APIs and demos 

     Take a look at ${ACTIVEMQ_HOME}/conf/jetty.xml for more details 
    --> 
    <import resource="jetty.xml"/> 

</beans> 

看起來像那些url的「作品」的故障轉移。

問題,我該如何測試故障轉移?有什麼建議麼?這是我第一次實現這一點。

謝謝。

+0

沒關係,我可以解決它。 – msqar

回答

0

每請求:

我居然跑2個不同的ActiveMQ的單獨命令提示符,配置ActiveMQ的每個文件夾內的conf文件。就這樣。

它通過在Mule端執行「failover://(tcp:// localhost:61616,tcp:// localhost:61617)」來工作。

關閉61616之後,所有條目將轉到第二個代理61617。所以它效果很好。

+0

請使用您問題上的編輯鏈接添加更多信息。後回答按鈕應該只用於問題的完整答案。 –

+0

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 – sdasdadas

+0

我已經添加了我所做的來解決它。我也是這篇文章的作者。 – msqar