The ClojureWerkz Blog

News and updates about ClojureWerkz projects

Monger 1.7.0 Is Released

TL;DR

Monger is an idiomatic Clojure MongoDB driver for a more civilized age. It has batteries included, offers powerful expressive query DSL, strives to support every MongoDB 2.0+ feature and has sane defaults. It also has solid documentation.

1.7.0 is a minor backwards-compatible release that updates MongoDB Java driver and makes two dependencies optional.

Changes between 1.6.0 and 1.7.0

MongoDB Java Driver Update

MongoDB Java driver dependency has been updated to 2.11.3.

Ragtime Dependency Dropped

Ragtime is now an optional dependency: if your project uses monger.ragtime, you need to add Ragtime to your own project.clj:

1
[ragtime/ragtime.core          "0.3.4"]

Validateur Dependency Dropped

Validateur is no longer a dependency.

Change Log

Monger change log is available on GitHub.

Monger is a ClojureWerkz Project

Monger is part of the group of libraries known as ClojureWerkz, together with

  • Langohr, a Clojure client for RabbitMQ that embraces the AMQP 0.9.1 model
  • Cassaforte, a Clojure Cassandra client built around CQL
  • Elastisch, a minimalistic Clojure client for ElasticSearch
  • Welle, a Riak client with batteries included
  • Neocons, a client for the Neo4J REST API
  • Quartzite, a powerful scheduling library

and several others. If you like Monger, you may also like our other projects.

Let us know what you think on Twitter or on the Clojure mailing list.

About the Author

@michaelklishin on behalf of the ClojureWerkz Team

Langohr 2.2.0 Is Released

TL;DR

Langohr is a small Clojure RabbitMQ client.

2.2.0 is a usability improvement release.

Changes between Langohr 2.1.x and 2.2.0

Automatic Topology Recovery Tracks Entities Per Connection

Automatic topology recovery now tracks entities (exchanges, queues, bindings, and consumers) per connection. This makes it possible to, say, declare an exchange on one channel, delete it on another channel and not have it reappear.

Suggested by Jonathan Halterman.

RabbitMQ Java Client Upgrade

RabbitMQ Java client dependency has been updated to 3.2.2.

clj-http Upgrade

clj-http dependency has been updated to 0.7.8.

Cheshire Upgrade

Cheshire dependency has been updated to 5.3.1.

Change Log

Langohr change log is available on GitHub.

Langohr is a ClojureWerkz Project

Langohr is part of the group of libraries known as ClojureWerkz, together with

  • Elastisch, a minimalistic well documented Clojure client for ElasticSearch
  • Cassaforte, a Clojure Cassandra client built around CQL 3.0
  • Monger, a Clojure MongoDB client for a more civilized age
  • Neocons, a client for the Neo4J REST API
  • Quartzite, a powerful scheduling library

and several others. If you like Langohr, you may also like our other projects.

Let us know what you think on Twitter or on the Clojure mailing list.

About The Author

Michael on behalf of the ClojureWerkz Team

Meltdown 1.0.0-beta3 Is Released

TL;DR

Meltdown is a Clojure interface to Reactor, an asynchronous programming, event passing and stream processing toolkit for the JVM.

1.0.0-beta3 is a development milestone release that updates Reactor to 1.0.0.RELEASE.

Changes between 1.0.0-beta2 and 1.0.0-beta3

Reactor Update

Reactor is updated to 1.0.0.RELEASE.

Change log

Meltodwn change log is available on GitHub.

Meltdown is a ClojureWerkz Project

Meltdown is part of the group of libraries known as ClojureWerkz, together with

  • Langohr, a Clojure client for RabbitMQ that embraces the AMQP 0.9.1 model
  • Elastisch, a Clojure client for ElasticSearch
  • Monger, a Clojure MongoDB client for a more civilized age
  • Cassaforte, a Clojure Cassandra client
  • Titanium, a Clojure graph library
  • Neocons, a client for the Neo4J REST API
  • Quartzite, a powerful scheduling library

and several others. If you like Meltdown, you may also like our other projects.

Let us know what you think on Twitter or on the Clojure mailing list.

About the Author

Michael on behalf of the ClojureWerkz Team

Machine Head 1.0.0-beta6 Is Released

TL;DR

Machine Head is a small Clojure MQTT client.

1.0.0-beta6 is a development milestone that introduces one usability improvement.

Changes Between 1.0.0-beta5 and 1.0.0-beta6

:clean-session Accepts false

It is now possible to set :clean-session to `false.

Contributed by Martin Trojer.

Change Log

Machine Head change log is available on GitHub.

Machine Head is a ClojureWerkz Project

Machine Head is part of the group of libraries known as ClojureWerkz, together with

  • Langohr, a Clojure client for RabbitMQ that embraces the AMQP 0.9.1 model
  • Elastisch, a minimalistic Clojure client for ElasticSearch
  • Monger, a Clojure MongoDB client for a more civilized age
  • Cassaforte, a Cassandra client built around CQL 3
  • Neocons, a feature rich Clojure client for Neo4J REST API

and several others. If you like Machine Head, you may also like our other projects.

Let us know what you think on Twitter or on the Clojure mailing list.

About the Author

Michael on behalf of the ClojureWerkz Team

Langohr 2.1.0 Is Released

TL;DR

Langohr is a small Clojure RabbitMQ client.

2.1.0 is a usability improvement & bug fix release.

Changes between Langohr 2.0.x and 2.1.0

Full Channel State Recovery

Channel recovery now involves recovery of publisher confirms and transaction modes.

No Zombie Bindings After Recovery

Langohr now correctly removes bindings from the list of bindings to recover when a binding is removed using queue.unbind or exchange.unbind.

Change Log

Langohr change log is available on GitHub.

Langohr is a ClojureWerkz Project

Langohr is part of the group of libraries known as ClojureWerkz, together with

  • Elastisch, a minimalistic well documented Clojure client for ElasticSearch
  • Cassaforte, a Clojure Cassandra client built around CQL 3.0
  • Monger, a Clojure MongoDB client for a more civilized age
  • Neocons, a client for the Neo4J REST API
  • Quartzite, a powerful scheduling library

and several others. If you like Langohr, you may also like our other projects.

Let us know what you think on Twitter or on the Clojure mailing list.

About The Author

Michael on behalf of the ClojureWerkz Team

Route One 1.0.0 Is Released

Route One is a Clojure DSL for URL/URI/path generation from a route map, compatible with Compojure’s Clout.

1.0.0 fixes one compatibility issue with Compojure integration.

Changes Between 1.0.0-rc3 and 1.0.0

url-for Preserves Paths From Base URL

Leading path component from *base-url* is now preserved when constructing path in url-for.

Contributed by Ray Miller.

Change log

Route One change log is available on GitHub.

Route One is a ClojureWerkz Project

Route One is part of the group of libraries known as ClojureWerkz, together with

  • Langohr, a Clojure client for RabbitMQ that embraces the AMQP 0.9.1 model
  • Elastisch, a small feature complete Clojure client for ElasticSearch
  • Cassaforte, a Clojure Cassandra client
  • Neocons, a client for the Neo4J REST API
  • Monger, a Clojure MongoDB client for a more civilized age
  • Titanium, a Clojure graph library
  • Welle, a Riak client with batteries included
  • Quartzite, a powerful scheduling library

and several others. If you like Elastisch, you may also like our other projects.

Let us know what you think on Twitter or on the Clojure mailing list.

About The Author

Michael on behalf of the ClojureWerkz Team

Validateur 1.6.0 Is Released

TL;DR

Validateur is a functional validations library inspired by Ruby’s ActiveModel. Validateur 1.6 contains a usability improvement and drops Clojure 1.3 support.

Changes between Validateur 1.5.0 and 1.6.0

Corrected logic in blank/nil validations

Corrected the logic in the allowed-to-be-blank functions to properly allow nil values when allow-nil is true, but allow-blank is false. Previously, both allow-blank and allow-nil had to be set to true to allow nil values due to clojure’s blank? function returning true for nil.

Contributed by Wes Johnson.

Clojure 1.3 No Longer Supported

Clojure 1.3 is no longer supported by Validateur.

Change Log

We recommend all users to upgrade to 1.6.0.

Validateur change log is available on GitHub.

Thank You, Contributors

Wes Johnson contributed key improvements in this release.

Validateur is a ClojureWerkz Project

Validateur is part of the group of libraries known as ClojureWerkz, together with

  • Langohr, a Clojure client for RabbitMQ that embraces the AMQP 0.9.1 model
  • Monger, a Clojure MongoDB client for a more civilized age
  • Elastisch, a minimalistic Clojure client for ElasticSearch
  • Cassaforte, a Clojure Cassandra client built around CQL
  • Neocons, a client for the Neo4J REST API
  • Welle, a Riak client with batteries included
  • Quartzite, a powerful scheduling library

and several others. If you like Validateur, you may also like our other projects.

Let us know what you think on Twitter or on the Clojure mailing list.

About The Author

Michael on behalf of the ClojureWerkz Team

Langohr 2.0.1 Is Released

TL;DR

Langohr is a small Clojure RabbitMQ client.

2.0.1 is a bug fix release.

Changes between Langohr 2.0.0 and 2.0.1

No Zombie Bindings After Recovery

Langohr now correctly removes bindings from the list of bindings to recover when a binding is removed using queue.unbind or exchange.unbind.

Change Log

Langohr change log is available on GitHub.

Langohr is a ClojureWerkz Project

Langohr is part of the group of libraries known as ClojureWerkz, together with

  • Elastisch, a minimalistic well documented Clojure client for ElasticSearch
  • Cassaforte, a Clojure Cassandra client built around CQL 3.0
  • Monger, a Clojure MongoDB client for a more civilized age
  • Neocons, a client for the Neo4J REST API
  • Quartzite, a powerful scheduling library

and several others. If you like Langohr, you may also like our other projects.

Let us know what you think on Twitter or on the Clojure mailing list.

About The Author

Michael on behalf of the ClojureWerkz Team

Langohr 2.0.0 Is Released

TL;DR

Langohr is a Clojure RabbitMQ client that embraces AMQP 0.9.1 Model.

2.0.0 is a major release that introduces automatic topology (queues, exchanges, bindings, and consumers) recovery.

Making Automatic Connection Recovery More Awesome

Langohr 1.7.0 supports automatic recovery of connections and channels when network connectivity fails. However, recovery of queues, exchanges, bindings and consumers was up to developers. In most cases, topology recovery consists of a few straightforward steps:

  • Re-declare queues
  • Re-declare exchanges
  • Re-establish bindings
  • Re-register consumers

Langohr 2.0 provides a feature that performs those steps automatically. Every channel now tracks the entities declared on it and re-declares them after recovery. It’s possible to disable this feature and perform manual recovery, just like before.

For many applications, recovery from network and node failures will now be almost effortless. Give it a try and let us know how it goes!

Changes between Langohr 1.7.0 and 2.0.0

Topology (Queues, Exchanges, Bindings, Consumers) Recovery

Connection recovery now supports entity recovery. Queues, exchanges, bindings and consumers can be recovered automatically after channel recovery. This feature is enabled by default and can be disabled by setting the :automatically-recover-topology option to false.

:requested-channel-max Connection Option

:requested-channel-max is a new option accepted by langohr.core/connect that configures how many channels this connection may have. The limit is enforced on the client side. 0 means “no limit” and is the default.

Contributed by Glophindale.

langohr.queue/empty?

langohr.queue/empty? is a new function that returns true if provided queue is empty (has 0 messages ready):

1
2
3
4
(require '[langohr.queue :as lq])

(lq/empty? ch "a.queue")
;= true

langohr.core/add-shutdown-listener

langohr.core/add-shutdown-listener is a helper function that reifies and registers a shutdown signal listener on a connection.

langohr.core/add-blocked-listener

langohr.core/add-blocked-listener is a helper function that reifies and registers a connection.blocked and connection.unblocked listener on a connection.

Change Log

Langohr change log is available on GitHub.

Langohr is a ClojureWerkz Project

Langohr is part of the group of libraries known as ClojureWerkz, together with

  • Elastisch, a minimalistic well documented Clojure client for ElasticSearch
  • Cassaforte, a Clojure Cassandra client built around CQL 3.0
  • Monger, a Clojure MongoDB client for a more civilized age
  • Neocons, a client for the Neo4J REST API
  • Quartzite, a powerful scheduling library

and several others. If you like Langohr, you may also like our other projects.

Let us know what you think on Twitter or on the Clojure mailing list.

Michael on behalf of the ClojureWerkz Team

Cassaforte 1.3.0-beta5 Is Released

TL;DR

Cassaforte is a Clojure client for Apache Cassandra 1.2+. It is built around CQL 3 and focuses on ease of use. You will likely find that using Cassandra from Clojure has never been so easy.

1.3.0-beta5 is a milestone release that upgrades Cassandra Java driver and introduces a minor feature.

Changes between 1.3.0-beta2 and 1.3.0-beta5

Cassandra Java Driver Update

Cassandra Java driver has been updated to 2.0.0-rc2.

UUID Generation Helpers

clojurewerkz.cassaforte.uuids is a new namespace that provides UUID generation helpers:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
(require '[clojurewerkz.cassaforte.uuids :as uuids])

(uuids/random)
;= #uuid "d43fdc16-a9c3-4d0f-8809-512115289537"

(uuids/time-based)
;= #uuid "90cf6f40-4584-11e3-90c2-65c7571b1a52"

(uuids/unix-timestamp (uuids/time-based))
;= 1383592179743

(u/start-of (u/unix-timestamp (u/time-based)))
;= #uuid "ad1fd130-4584-11e3-8080-808080808080"

(u/end-of (u/unix-timestamp (u/time-based)))
;= #uuid "b31abb3f-4584-11e3-7f7f-7f7f7f7f7f7f"

Full change log is available on GitHub.

Cassaforte is a ClojureWerkz Project

Cassaforte is part of the group of libraries known as ClojureWerkz, together with

  • Langohr, a Clojure client for RabbitMQ that embraces the AMQP 0.9.1 model
  • Monger, a Clojure MongoDB client for a more civilized age
  • Elastisch, a minimalistic Clojure client for ElasticSearch
  • EEP, a Clojure library for stream (event) processing
  • Neocons, a Clojure client for the Neo4J REST API
  • Quartzite, a powerful scheduling library

and several others. If you like Cassaforte, you may also like our other projects.

Let us know what you think on Twitter or on the Clojure mailing list.

About the Author

Michael on behalf of the ClojureWerkz Team.