明天我提出我的理由选择一个进程的消息队列的实现,我无法表达我的推理。我的合作设计师建议我们使用的工作只是一个基本的列表和一个互斥体来控制访问,在这里我建议在嵌入式模式的ActiveMQ实现一个简单的异步队列。我个人用的ActiveMQ已经非常深刻的印象,我想有一些很好的,论据扎实备份我的直觉印象。

如果它的事项,应用程序基本上是1个生产者/ n的消费者,优先和类型信息特定于正被处理的各个作业。

这是值得注意的是,到目前为止,该解决方案的可管理性和可扩展性没有得到有力的论据。我喜欢它,如果有人能够给我的论点更有力度。论坛能帮助我吗?

有帮助吗?

解决方案

您的同事论据并非全无道理。添加的ActiveMQ该项目是增加另一个依赖。它可能会更复杂的使用,它会比定制的解决方案更大的足迹。此外,由于你正在采用它,它有可能会成为你的责任,以维护和保持工作顺利 - bug和所有

这是说,的ActiveMQ(和其他队列)会做的事情,你可以写自己,但可能被证明是一种痛苦。支持整个JMS API就是其中之一(虽然我假设你使用的是Java ...如果你都没有,那么这一点上是无效的)。在高内存情况下串行化过量消息到磁盘是另一回事。持久订阅者和消息选择是想到一些其他的东西。晴钟声和口哨声之类的满足您的需求的东西似乎,但他们成为可靠的消息传递非常重要的。

无论你决定,封装消息代理的最终选择从客户端代码客场更容易地切换。

其他提示

如果可管理性和可扩展性不高的优先级,然后我想知道你是什么原因对于希望使用一个可管理的消息队列?也许你的同事是正确的,你真的不需要额外的功能集?

不必在怪异边缘情况下的调试并发代码

是一个很大的好处。我不知道这种结构是多么重要,因为你的整个项目的一部分,但如果消息队列是项目的重要组成部分,那么你可以通过使用一个实现收获的巨大的好处别人写,已经调试完毕,并会为你维护。如果它只是一些不重要的子系统的一次性的部分,它可能并不重要你最终做。但是,如果它的关键,我宁愿文件不是花我的时间调试并行代码中的错误报告(我已经开始在恐惧反冲!)。

在短版:不要让使用别人的作品NIH综合症停止你得到你完成工作更快,更好,更便宜。但不要建立一个小题大做的,无论是。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top