2017-04-12 23 views
1

这是一个面试问题 - 在生产环境中ActiveMQ的队列已满时该怎么做?当生产环境中ActiveMQ的队列已满时该怎么办?

应该丢弃下一条消息;或者我应该自己实现一个缓冲区还是将其存储在数据库中?

我想知道实际生产环境中的一般解决方案。

+0

向外扩展消息出队过程。 –

回答

3

简单的答案是:这取决于。

您的要求。我们无法知道。您必须了解哪种方法符合您应用程序的业务目标。

换句话说:不能有一个普遍的答案。如果您在衡量某个网页上的点击次数,那么放弃一次网页可能不是什么大问题。但是当我们谈论客户订单时,最好确保永远不要忘记单一订单。

+0

好的,谢谢。说实话,这是一个面试问题,我不知道我的答案。当MQ用于解耦多个系统时,消息非常重要吗?在这种情况下,详细的解决方案是什么?就像自己实现缓冲区或将其存储在数据库中一样?但我认为存储在数据库中是不正确的? – Jeremy

+0

这又取决于。当你实现一个内存缓冲区时,当你的系统崩溃时,你仍然可以丢失事件!因此,写入永久存储器可能是避免丢失数据的更好策略。另一方面,这可能意味着你开始把负载加载到你的数据库中,因为有些事情已经发生了错误,从而使你的问题变得更糟! – GhostCat

+0

@Jeremy - 你现在正在接受采访?干得好先生! –