JMS消息对象的大小限制是多少?

6

主要问题并没有给出问题的具体概念,所以在这里我来解释一下。

任务是根据某种关系将属于一个家庭的对象进行划分,并将它们作为JMS消息传递给一个进程进行处理。所有家庭成员应该一起处理。

现在,家庭群体可能会变得更大。所以问题是:是否有其他方法可以避免我列出的问题。


1
“...这将不会有我列出的问题。”什么问题?你似乎没有列出任何一个问题。 - T.J. Crowder
问题在于主题中提到的消息大小限制... - AlexR
2个回答

13

从理论上来说,消息大小仅受JVM堆大小限制。但我认为发送过大的消息并不是一个好的实践。如果您的消息大于10K,那么最好重新考虑您的设计。

如果您确实需要发送大量数据,可能更好的解决方案是将数据存储在数据库中,并使用消息发送主体的ID,以便对方能够检索所需的数据。


+1:对于非常大的数据,例如GB级别的数据,我会使用网络可访问的文件,例如NFS或Windows共享。 - Peter Lawrey
@AlexR:我和楼主有同样的问题。我只需要对你的评论进行澄清。如果“另一方”是一个不同的系统,它将如何检索存储为ID在数据库中的数据? - Gnanam
你能否提供一个参考,为什么大于10K的消息需要通过侧信道来增加复杂性? - Markus Malkusch
1
消息被发送为可序列化的Java对象。大型消息的序列化需要时间。大型消息会占用JVM堆的一部分。如果JMS目标是持久化的,则该消息不仅被序列化/反序列化(可能甚至两次),而且还存储在通用数据库中,然后从中检索出来,这需要更多的时间和CPU资源,而从专门的数据库模式中检索相同的数据则更加高效。 - AlexR

1

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

有关更多信息,请参见此问题/答案:JMS消息大小


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接