2012-08-22 77 views
0

我有一個快速的生產者ESB(將CSV轉換爲XML)和一個耗時較慢的ESB(對XML執行zip/base64/SOAP封裝)。 ESB通過JMS主題進行通信。這種設計是傳統的,不能改變。當處理一個大的CSV文件時,JBoss AS(5.2)隨着生產者將用戶氾濫而崩潰,這甚至是4096M的堆大小。原諒我,我是JBoss/JMS的新手,發現它令人迷惑。如何配置JBoss/JMS消息速率限制/流量控制

生產者發送配置

<action class="com.example.FooAction" name="ProcessFoo"> 
    <property name="springJndiLocation" value="FooEsbSpring" /> 
    <property name="exceptionMethod" value="exceptionHandler" /> 
    <property name="okMethod" value="processSuccess" /> 
    <property name="jndiName" value="topic/FooTopic" /> 
    <property name="connection-factory" value="ConnectionFactory" /> 
    <property name="unwrap" value="true" /> 
    <property name="security-principal" value="guest" /> 
    <property name="security-credential" value="guest" /> 
</action> 

生產者發送代碼:

Message msg = MessageFactory.getInstance().getMessage(MessageType.JAVA_SERIALIZED); 
msg.getBody().add(foo); // foo is the business specific message 
new JMSRouter(config).process(msg); 

消費者接收配置:

<jms-jca-provider connection-factory="ConnectionFactory" name="FooMessaging"> 
    <jms-bus busid="fooChannel"> 
     <jms-message-filter dest-name="topic/FooTopic" 
      dest-type="TOPIC" transacted="false" /> 
    </jms-bus> 
    <activation-config> 
     <property name="dLQMaxResent" value="1" /> 
    </activation-config> 
</jms-jca-provider> 

主題配置

迄今爲止我嘗試過的東西。

  • 在沒有使用者ESB的情況下運行發佈者ESB - 如預期的那樣沒有問題。
  • 大量的谷歌搜索,尋找現有的問題上stackoverflow
  • 找到一些參考rate limiting,但我看不出如何適應這些到我的配置。
  • 我試圖找到一個API來發現未處理的主題上已經有多少消息(希望我可以實現自己的退避策略)。
  • 看着這個documentation
+0

我只是發現退避策略最大範圍(以前MAXDEPTH)屬性爲主題的配置 - 在那一刻測試:HTTP://docs.jboss .org/jbossmessaging/docs/userguide-1.4.5.GA/html/configuration.html – Adam

回答

1

看看這個部分6.3.17.2. org.jboss.mq.server.jmx.Topic並使用JMX的'深度'相關屬性。

它可以幫助你建立你正在尋找

+0

任何想法如何通過代碼訪問這些? – Adam

+0

感謝您的答案,但我使用「JBoss消息傳遞」而不是JBoss MQ ... – Adam