IronMQ Ruby Client

The full API documentation is here and this client tries to stick to the API as much as possible so if you see an option in the API docs, you can use it in the methods below.

http://dev.iron.io/mq/reference/api/

Getting Started

1. Install the gem:

gem install iron_mq

2. Setup your Iron.io credentials: http://dev.iron.io/articles/configuration/

3. Create an IronMQ client object:

@ironmq = IronMQ::Client.new()

Or pass in credentials:

@ironmq = IronMQ::Client.new(token: MY_TOKEN, project_id: MY_PROJECT_ID)

The Basics

Get a Queue object

You can have as many queues as you want, each with their own unique set of messages.

@queue = @ironmq.queue("my_queue")

Now you can use it:

Post a message on the queue:

@queue.post("hello world!")

Post a message with options:

@queue.post("hello world!", delay: 3600)

Get a message off the queue:

msg = @queue.get()
puts msg.body

Get a message with options:

msg = @queue.get(timeout: 300)

When you pop/get a message from the queue, it will NOT be deleted. It will eventually go back onto the queue after a timeout if you don't delete it (default timeout is 60 seconds).

Delete a message from the queue:

msg.delete # or @queue.delete(msg.id)

Be sure to delete a message from the queue when you're done with it.

Poll for messages:

@queue.poll do |msg|
  puts msg.body
end

Polling will automatically delete the message at the end of the block.

Queue Information

queue = @client.queue("my_queue")
puts "size: #{queue.size}"

Push Queues

IronMQ push queues allow you to setup a queue that will push to an endpoint, rather than having to poll the endpoint.

LINK TO BLOG POST

Set subscribers on a queue:

Subscribers can be any http endpoint. push_type is one of:

  • multicast - will push to all endpoints/subscribers
  • unicast - will push to one and only one endpoint/subscriber
subscribers = []
subscribers << {url: "http://rest-test.iron.io/code/200?store=key1"}
subscribers << {url: "http://rest-test.iron.io/code/200?store=key2"}
res = @queue.update_queue(:subscribers => subscribers,
                               :push_type => t)

Add/remove subscribers on a queue

@queue.add_subscriber({url: "http://nowhere.com"})
# Or to remove a subscriber:
@queue.remove_subscriber({url: "http://nowhere.com"})

Get message push status

After pushing a message:

queue.messages.get(m.id).subscribers

Returns an array of subscribers with status.