We're as happy as the Seattle Seahawks after last night's win to announce our second bi-monthly beta release of Immutant - version 0.4.0, hopefully culminating in a 1.0.0 version this fall. As always, view our road map here.
What is Immutant?
Immutant is an application server for Clojure. It's an integrated platform built on JBoss AS7 that aims to reduce the inherent accidental complexity in real world applications.
What's in this release?
Highlights include:
- Auto-reloading of your web app source files when modified with
the
:reload
option ofimmutant.web/start
. - We now support
durable topic subscribers.
Simply pass a
:client-id
to eitherreceive
orlisten
. - We're smarter about stopping JMS destinations now. Specifically, we'll never stop a durable queue or a topic with durable subscribers if it contains undelivered messages. This guarantees message delivery even across server restarts.
- When you pass messages that are Clojure data structures, we pass their metadata as filterable JMS properties, and reconstitute it upon delivery.
- We introduced a
Daemon
protocol to theimmutant.daemons
namespace. To avoid a naming conflict, we renamed thestart
function torun
. - We added some options to the Leiningen plugin to make it very easy to set virtual host and context path options at the command line when deploying your app.
- We reduced application deployment times by about 40%, and we're not done yet.
Get It
The simplest way to install or upgrade to 0.4.0 is via our Leiningen plugin:
$ lein immutant install 0.4.0
See our install page for more details. Once you have it installed, take a look at our tutorials.
Get In Touch
If you have any questions, issues, or other feedback about Immutant, you can always find us on #immutant on freenode or our mailing lists.
Issues resolved in 0.4.0
- [IMMUTANT-21] - Implement reloading in development mode
- [IMMUTANT-29] - Support durable topic subscribers
- [IMMUTANT-96] - message queue names should not contain '/' character
- [IMMUTANT-101] - Provide easier access to Message properties
- [IMMUTANT-104] - Pass JobExecutionContext to function called by job
- [IMMUTANT-105] - Jobs appear to run concurrently even though they implement StatefulJob
- [IMMUTANT-117] - Deployment takes too long
- [IMMUTANT-118] - Queued messages don't seem to persist across a server restart
- [IMMUTANT-119] - Turn daemons api into a protocol
- [IMMUTANT-120] - Properly apply ~/.lein/profiles.clj to deployed projects
- [IMMUTANT-121] - Add options to lein plugin's deploy task
- [IMMUTANT-123] - Allow apps to deploy with immutant-messaging as an explicit dependency