【问题标题】:What to do when ActiveMQ's queue is full in productive environment?生产环境下ActiveMQ队列满了怎么办?
【发布时间】:2017-09-07 14:58:58
【问题描述】:

这是一个面试题——在生产环境中ActiveMQ的队列满了怎么办?

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

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

【问题讨论】:

  • 横向扩展正在使消息出队的任何进程。

标签: java queue activemq


【解决方案1】:

简单的答案是:视情况而定。

关于您的要求。我们无法知道。您必须了解各种方法中的哪一种可以满足您的应用程序的业务目标。

换句话说:不可能有一个普遍的答案。如果您正在测量某个网页的点击次数,那么丢失一个可能没什么大不了的。但是,当我们谈论来自客户的订单时,您最好确保永远不要忘记一个订单。

【讨论】:

  • 好的,谢谢。老实说,这是一个面试问题,我不确定我的答案。当MQ用于解耦多个系统时,消息很重要对吧?在这种情况下,详细的解决方案是什么?比如自己实现缓冲区或将其存储在数据库中?但我认为存储在数据库中效率不高吧?
  • 这又取决于。当您实现内存缓冲区时,您仍然可以在系统崩溃时丢失事件!因此,写入持久存储可能是避免丢失数据的更好策略。另一方面,这可能意味着您开始在已经出现问题的情况下将负载加载到数据库中,从而使您的问题变得更糟!
  • @tom redfern,这只是一个从网上收集的面试问题。我正在准备找一份新工作,但我没有参加面试......
  • 不知道这里还能说什么。您的问题非常广泛,因此您实际上可以很高兴它没有被否决/关闭。我怀疑还会有很多其他事情发生。所以,为了记录,考虑在某个时候接受。
  • 来干什么,好恶心
猜你喜欢
  • 2012-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-20
  • 1970-01-01
  • 2017-11-27
  • 2021-10-01
  • 2020-06-23
相关资源
最近更新 更多