und*_*dog 2 java asynchronous message-queue executorservice
消息队列主要用于在服务器上执行异步任务,我最近阅读了有关Executor框架的内容,它也执行相同的操作,生成并管理线程以执行异步任务.谁能告诉我两者之间的区别?
主要区别在于Executor框架用于程序内任务排队和执行,而JMS用于在不同机器上的不同程序(通常)之间进行排队.
其他差异包括:
JMS队列是(或可以是)持久的,其中Executor等仅在内存中.
JMS队列可以(我相信)在事务系统中使用,而Executor等等则不能.(在某种程度上,这是持久性/非持久性区分的结果.)
这意味着如果我的应用程序没有分发,我可以使用Executor框架.
也许 ...
对于一个实例,我想编写一个fb样式的通知系统并发布订阅,那么执行器框架的使用是否合适?我假设代码将在一个数据库中位于同一台机器上.
那么问题是Executor框架的标准实现不会将任务队列放入数据库中.它们只是轻量级的内存数据结构.如果重新启动应用程序,它们不会持久存在.
现在,我想您可以编写将队列放入数据库的Executor/ExecutorService类.但为什么要这么麻烦?使用JMS或类似的更简单......