Java and JBoss related stuff
RSS icon Home icon
  • ElasticMQ 0.2 – support for delayed queues and messages

    Posted on January 12th, 2012 Adam Warski No comments

    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