gpt4 book ai didi

jms - 何时将持久性与 Java 消息传递和队列系统结合使用

转载 作者:行者123 更新时间:2023-12-04 07:25:35 24 4
gpt4 key购买 nike

我正在对 (Java) 消息传递和队列系统进行贸易研究,以便为即将到来的主要 Web 应用程序(在 Amazon 的 EC2 云、x-large 实例上)重新设计后端框架。我目前正在评估 ActiveMQ 和 RabbitMQ。

计划是有 5 个不同的队列,其中一个是死信队列。每天发送的消息数量将在 40K 到 400K 之间。由于我计划将消息内容作为指向数据存储上 XML 文件位置的指针,因此我希望消息大约为 64 字节。但是,出于评估目的,我还想考虑在消息中发送原始 XML,平均文件大小为 3KB。

我的主要问题是:每天应该在什么时候/多少条消息上持久化?考虑到我上面指定的数量,保留所有消息是否合理?我知道坚持会降低性能,也许会降低很多。但是,由于不坚持,会使用大量 RAM。你们中的一些人会推荐什么?

另外,我知道网上有很多关于 ActiveMQ (JMS) 与 RabbitMQ (AMQP) 的信息。我做了大量的研究和测试。似乎任何一种实现都适合我的需求。考虑到我上面提供的信息(文件大小和消息数量),有人能指出我可能错过的使用特定供应商的原因吗?

谢谢!

最佳答案

When/how many messages should be persisted on a daily basis? Is it reasonable to persist all messages, considering the amounts I specified above?



JMS 持久性不会取代数据库,它应该被视为数据的生产者和消费者之间的短期缓冲区。也就是说,您提到的消息量/大小不会对任何现代 JMS 系统(无论如何配置正确)上的持久性适配器造成负担,并且可以根据需要用于缓冲消息以延长持续时间(只需使用 reliable message store architecture )

I know that persisting will decrease performance, perhaps by a lot. But, by not persisting, a lot of RAM is being used. What would some of you recommend?



根据我的经验,启用消息持久性并不是一个重大的性能损失,并且几乎总是为了保证消息。对于大多数应用程序,上游(生产者)或下游(消费者)的进程最终成为瓶颈(尤其是数据库 I/O)......而不是 JMS 持久性存储

Also, I know that there is a lot of information online regarding ActiveMQ (JMS) vs RabbitMQ (AMQP). I have done a ton of research and testing. It seems like either implementation would fit my needs. Considering the information that I provided above (file sizes and # of messages), can anyone point out a reason(s) to use a particular vendor that I may have missed?



我已经在许多项目中成功地将 ActiveMQ 用于低容量和高容量的消息传递。我建议将它与路由引擎一起使用,例如 Apache Camel精简 integrationcomplex routing patterns

关于jms - 何时将持久性与 Java 消息传递和队列系统结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12673603/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com