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.