繁体   English   中英

持久性队列实施

[英]Persistance Queue Implementation

我在JDJ http://java.sys-con.com/node/415321上阅读了一篇关于Java批量处理的文章。 该文章提到使用持久性队列作为批量更新程序,而不是立即向数据库发送单独的插入或更新。 作者没有给出这个概念的具体例子,所以我用谷歌搜索了持久性队列,但没有提出太多。 有谁知道这个好例子?

看一下之前的Stackoverflow问题:

使用队列的生产者/消费者线程

第一个答案是使用ExecutorService实现Producer-Consumer(这是你想要的)。 这是一种做你想要的方法,但它使用内存队列 - 你可以很容易地将它改为JMS队列。

这种模式有几个名称( Ex.Backing Store,Write-Behind等...... )。 这通常出现在数据网格/缓存技术以及其他技术中。 通常,域对象存储在某种FIFO或优先级队列中,然后调度程序将它们在备用线程或进程上出列,并将它们传递给您的真实DAL。 队列可以在内存中或实际放置在网络队列上,例如ActiveMQ或MSMQ。 此外,我已经看到场景中每种类型的数据库操作都有单独的队列。

在许多情况下,这是作为代表相同界面的DAL前面的外观实现的。 通过这种方式,其他应用程序认为他们正在与“真正的”DAL进行通信,并从其他相关问题中抽象出来。 这种分离允许您在需要时进行更改。 当对象数据提交到外观时,数据被排队,然后控制返回到调用应用程序。

排队后,您可以只进行批量更新/插入或继续一次处理一个项目。 请记住,交易的概念具有非常不同的含义,因此您需要通过思考。

虽然有技术可以做到这一点......这更像是一种模式,而不是单一的技术。 我没有方便的示例,但您可以查看Oracle Coherence等产品的数据网格文档。 寻找后备商店。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM