【问题标题】:How big can a JMS message object be?JMS 消息对象可以有多大?
【发布时间】:2012-03-11 16:55:46
【问题描述】:

主要问题没有给出问题的想法,所以我在这里解释一下。

任务是划分属于一个系列的对象(基于某种关系)并将它们作为 JMS 消息传递给一个流程以执行操作。家庭中的所有人都应该一起处理。

现在家庭组可以变得更大。所以这个问题。有没有其他方法不会出现我列出的问题。

【问题讨论】:

  • "...不会有我列出的问题。" 什么问题?您似乎没有列出一个。
  • 问题是主题中提到的邮件大小限制...

标签: java jms


【解决方案1】:

理论上,消息大小仅受 JVM 堆大小的限制。但我不认为发送太大消息是一个好习惯。我会说,如果您的消息大于 10K,请重新考虑您的设计。

如果你真的需要在你的消息中发送大量数据,更好的解决方案是将数据存储在 DB 中,并在消息中发送主实体的 ID,以便对方能够检索它需要的数据。

【讨论】:

  • +1:我会使用网络可访问文件,例如NFS 或 Windows 共享,用于非常大的数据,例如GB。
  • @AlexR:我也和 OP 有同样的问题。我只需要澄清你的评论。如果other side 是一个不同的系统,它将如何检索在数据库中存储为ID 的数据?
  • 您能否提供一个参考,为什么大于 10K 的消息证明侧通道的额外复杂性是合理的?
  • 消息作为可序列化的 java 对象发送。大消息的序列化需要时间。大消息占用了 JVM 堆的一部分。如果 JMS 目标被持久化,则消息不仅被序列化/反序列化(甚至可能两次),而且还存储在通用数据库中,然后从中检索,这比从专门的数据库模式检索相同的数据需要更多的时间和更多的 CPU。
【解决方案2】:

实际上Object Message 的大小在JMS 中没有任何限制。 JMS 是 API,如果它的实现必须决定这个问题。

有关更多信息,请参阅此问题/答案:JMS message size

【讨论】:

    猜你喜欢
    • 2012-01-07
    • 2011-10-28
    • 2015-05-19
    • 1970-01-01
    • 2018-02-10
    • 2012-09-13
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多