Time to start blogging in 2012 :)
I just released version 0.2 of ElasticMQ – a simple message queue system, which implements the Amazon SQS interface. Ideal if you want to test a service which uses SQS, or create a system which can leverage either the AWS infrastructure or run stand-alone.
The new version brings support for some new Amazon SQS features: delayed messages and queues. See the Amazon Blog for details.
Also, I changed the testsuite to use Amazon’s Java SDK. So you can be pretty sure that ElasticMQ works with SQS clients :). As an example, here’s the required code (in Scala, Java equivalent would be obviously a bit longer ;) ) to start an ElasticMQ node, send & receive a message using Amazon Java SDK and shutdown the server.
// First we need to create a Node
val node = NodeBuilder.withInMemoryStorage().build()
// Then we can expose the native client using the SQS REST interface
val server = SQSRestServerFactory.start(node.nativeClient, 8888,
"http://localhost:8888")
// Now we need to create the sqs client
client = new AmazonSQSClient(new BasicAWSCredentials("x", "x"))
client.setEndpoint("http://localhost:8888")
// Using the client is quite straightforward
val queueUrl = client.createQueue(new CreateQueueRequest("queue1"))
.getQueueUrl
client.sendMessage(new SendMessageRequest(queueUrl, "message1"))
client.shutdown()
// Finally we need to stop the server and the node
server.stop()
node.shutdown()
For more information about ElasticMQ, information on SBT and Maven dependencies, see the webpage.
Stay tuned,
Adam