【问题标题】:difference between Executor framework & Message queues like JMSExecutor 框架和 JMS 等消息队列之间的区别
【发布时间】:2014-12-21 14:21:44
【问题描述】:

消息队列主要用于在服务器上执行异步任务,我最近阅读了有关 Executor 框架的信息,该框架也执行相同的操作来生成和管理线程以执行异步任务。谁能告诉我这两者的区别?

【问题讨论】:

    标签: java asynchronous message-queue executorservice


    【解决方案1】:

    主要区别在于 Executor 框架用于程序内任务排队和执行,而 JMS 用于(通常)在不同机器上的不同程序之间排队。

    其他差异包括:

    • JMS 队列是(或可以是)持久的,而 Executor 等仅在内存中。

    • JMS 队列可以(我相信)在事务系统中使用,而 Executor 等则不能。 (在某种程度上,这是持久/非持久区别的结果。)


    这意味着如果我的应用程序不是分布式的,我可以使用 Executor 框架。

    也许……

    例如,我想编写一个 fb 样式的通知系统并发布订阅,那么使用执行器框架是否适合呢?我假设代码将在单个数据库中的同一台机器上。

    问题在于 Executor 框架的标准实现不会将任务队列放入数据库。它们只是轻量级的内存数据结构。如果您的应用程序重新启动,它们不会持续存在

    现在,我想您可以编写将队列放入数据库的 Executor / ExecutorService 类。但是为什么要打扰呢?使用 JMS 或类似的会更简单...

    【讨论】:

    • 这意味着如果我的应用程序不是分布式的,我可以使用 Executor 框架。例如,我想编写一个 fb 样式的通知系统并发布订阅,使用执行器框架是否适合?我假设代码将在单个数据库中的同一台机器上
    • 一个 jms 框架可能还支持故障转移、负载平衡、失败重试、在太多失败时移动到另一个队列...
    • ...在为执行器设计的场景中,这些都没有多大意义。
    猜你喜欢
    • 2014-08-12
    • 2021-09-11
    • 2011-01-29
    • 2013-11-05
    • 2014-05-07
    • 2018-10-08
    • 2016-01-27
    • 2020-12-19
    • 2011-05-24
    相关资源
    最近更新 更多