【问题标题】:How to configure JBoss/JMS message rate limit / flow control如何配置 JBoss/JMS 消息速率限制/流量控制
【发布时间】:2012-08-22 08:54:48
【问题描述】:

我有一个快速的生产者 ESB(将 CSV 转换为 XML)和一个慢的消费者 ESB(执行 XML 的 zip/base64/SOAP 包装)。 ESB 通过 JMS 主题进行通信。此设计是遗留的,无法更改。当处理一个大的 CSV 文件时,JBoss AS (5.2) 会因为生产者淹没消费者而停止,即使堆大小为 4096M。请原谅我是 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>

主题配置

<server>
<mbean code="org.jboss.jms.server.destination.TopicService"
    name="jboss.esb.quickstart.destination:service=Topic,name=FooTopic"
    xmbean-dd="xmdesc/Queue-xmbean.xml">
    <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer
    </depends>
    <depends>jboss.messaging:service=PostOffice</depends>
</mbean>
</server>

到目前为止我尝试过的事情。

  • 在没有消费者 ESB 的情况下运行发布者 ESB - 正如预期的那样没有问题。
  • 大量谷歌搜索,寻找有关 stackoverflow 的现有问题
  • 找到了一些对 rate limiting 的引用,但我不知道如何将它们放入我的配置中。
  • 我试图找到一个 API 来发现有多少关于该主题的消息尚未处理(希望我可以实施自己的退避策略)。
  • 看过这个documentation

【问题讨论】:

标签: java jboss jms jboss5.x


【解决方案1】:

查看此部分6.3.17.2. org.jboss.mq.server.jmx.Topic 并使用 JMX 使用“深度”相关属性。

它可能会帮助您制定您正在寻找的退避策略

【讨论】:

    猜你喜欢
    • 2021-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    相关资源
    最近更新 更多