Producer Consumer Queue in Clojure
===

I want to build a producer-consumer program in clojure. The requirement is the consumer can drag items from the queue while the producer is putting messages into the queue, if using java I will use `ConcurrentLinkedQueue`, but I'm not very sure how to do it in clojure using the immutable collections, please help.