【问题标题】:Jboss Messaging. sending one message per timeJboss消息。每次发送一条消息
【发布时间】:2012-08-27 17:16:25
【问题描述】:

我们使用的是 JBOSS 5.1.0,我们使用主题来存储我们的消息。我们的客户正在进行持久订阅以获取这些消息。

一切正常,但一个问题是我们正在从 TCP 客户端获取数据,我们正在处理并将其保存在主题中,它每秒发送大约 10 条消息,而我们的客户端一次读取一条消息。这之间有很大的差距,一段时间后,JBOSS 主题有很多消息,并且崩溃说内存不足。 是否有任何解决方法。

【问题讨论】:

    标签: jboss messaging


    【解决方案1】:

    基本上,生产者产生的消息是消费者处理能力的 10 倍。如果这种情况稳定(不仅在高峰期),这将永远不会奏效。

    如果你限制生产者每秒只发送一条消息(这当然是可能的,例如查看RateLimiter),你将如何处理生产者端的额外消息?如果他们没有在主题中排队,他们将在生产者端排队。

    你有几个选择:

    • 以某种方式调整您的消费者以更快地处理消息,因此主题永远不会被填满

    • 调整主题以使用持久存储。这要好得多。不仅主题不会将所有内容都存储在内存中,而且您还可能会获得事务性行为(消息是持久的)

    • 将要设置为主题的消息队列放入并每秒处理一条消息。该队列必须是持久的,并且必须能够保留比当前主题更多的消息

    【讨论】:

    • 嗨,消费者是否会一次阅读所有消息,而不是每次阅读一条消息。
    • @Ravi:消费者可以使用多个线程一次处理多个消息。您还可以使用名为aggregator 的中间组件来动态组合消息。
    猜你喜欢
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    • 2020-10-15
    • 2021-07-26
    相关资源
    最近更新 更多