On Feb 6, 2014, at 6:45 PM, Zach Tellman <z...@factual.com> wrote:

> At Factual we get a lot of data thrown at us, and often don't have control 
> over the rate at which it comes in.  As such, it's preferable that our buffer 
> isn't bounded by the process' memory, since a temporary blip in throughput 
> may cause GC pauses, OOM exceptions, and other things that will only 
> exacerbate the problem.  It's also preferable that if the process dies, we 
> won't lose any data which hasn't yet escaped the process.  A disk-backed 
> queue satisfies both of these requirements.
> 
> As such, I'm happy to announce that we're open sourcing 'durable-queue': 
> https://github.com/Factual/durable-queue.  It's a small, fast, pure-Clojure 
> implementation that in our production systems is responsible for processing 
> billions of entries daily.  We believe it has broad applications, and are 
> excited to see how others will use it.

What excellent timing! I've been looking at ZeroMQ, RabbitMQ, and Kafka for the 
last week or so. ZMQ is awfully attractive for what I'm trying to do, but there 
are a few things it doesn't do that I need done. I had begun thinking of 
building something similar on top of Redis.

You mention the idea of batching to reduce the impact of fsync. Is there an API 
for batching puts? Is there a way to batch a complete! and put! new tasks to 
the queue?

One pattern that keeps coming up is:
   - take a single task from the queue
   - execute the task, which might generate a set of new tasks to be queued on 
the same queue (and likely on other queues too)
   - signal completion, and put the new tasks

Cheers,
Bob

> 
> Zach
> 
> P.S. If this sort of work is interesting to you, Factual is hiring: 
> https://groups.google.com/forum/#!searchin/clojure/factual/clojure/8bPIEnNpfyQ/lvv-9gkVozAJ
> 
> -- 
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with your 
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> --- 
> You received this message because you are subscribed to the Google Groups 
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to