Skip to content

Latest commit

 

History

History
409 lines (280 loc) · 9.1 KB

README.md

File metadata and controls

409 lines (280 loc) · 9.1 KB

IronMQ On-Premise/V3 Java Client

Note: You are reading documentation of Iron.MQ v3. There are some differences from the previous version of IronMQ. For more information please go to Iron.io Dev Center.

This version is for IronMq Version 3 and On-Premise. If you are using the public version please use version 0.0.17

Getting Started

There are three ways to get this package.

  1. Add it as a Maven dependency Your pom.xml will look something like:
    <dependencies>
        <!-- IronMQ message queue client -->
        <dependency>
            <groupId>io.iron.ironmq</groupId>
            <artifactId>ironmq</artifactId>
            <version>3.0.0</version>
        </dependency>
    </dependencies>
  1. Download the jar from Maven Repo.

  2. Build from source with Apache Buildr:

    buildr package

The .jar file will appear under the target directory.

Configure

Initialize a client and get a queue object:

Client client = new Client("my project", "my token", Cloud.ironAWSUSEast);
Queue queue = client.queue("test-queue");

It's also possible to specify more parameters:

int apiVersion = 3;
Client client = new Client(projectId, token, new Cloud("http", "localhost", 8080), apiVersion);

Keystone 2.0 authorization

iron.json

Add keystone section to your iron.json file

{
  "project_id": "000000000000000000000005",
  "keystone": {
    "server": "http://your.keystone.server/somepath/",
    "tenant": "some_tenant",
    "username": "bob",
    "password": "secret123",
  }
}

Initialize Client with empty token:

client = new Client(projectId, "", new Cloud(scheme, host, port), 3);

Or:

Assumed that IronMQ On-Premise runs on localhost:8080

{
  "scheme":"http",
  "host":"localhost",
  "port":8080,
  "project_id": "000000000000000000000005",
  "keystone": {
    "server": "http://your.keystone.server/somepath/",
    "tenant": "some_tenant",
    "username": "bob",
    "password": "secret123",
  }
}
client = new Client();
In code
client = new Client(projectId, new KeystoneIdentity(server, tenant, username, password), new Cloud(scheme, host, port), 3);

Token in iron.json file will be ignored.

The Basics

Client client = new Client("my project", "my token", Cloud.ironAWSUSEast);

Post a Message to the Queue

queue.push("Hello, IronMQ!");

More complex example:

String body = "Hello, IronMQ!";
int timeout = 30; // this parameter is redundant and left only for backward compatibility
int delay = 0;
int expiresIn = 0;
String messageId = queue.push(body, timeout, delay, expiresIn);

Post multiple messages in one API call:

String[] messages = {"c", "d"};
Ids ids = queue.pushMessages(messages);

--

Get a Message off the Queue

Message msg = queue.reserve();

When you reserve 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).

Get multiple messages in one API call:

Messages messages = queue.reserve(2);

--

Delete a Message from the Queue

Message msg = queue.reserve();
queue.deleteMessage(msg);

Delete a message from the queue when you're done with it.

Delete multiple messages

1. Deleting Messages collection

Messages messages = queue.reserve(4);
queue.deleteMessages(messages);

2. Deleting by Ids

String[] messages = {"hello", "world"};
Ids ids = queue.pushMessages(messages);
queue.deleteMessages();

--

Queues

List Queues

ArrayList<QueueModel> allQueues = Queues.getQueues(client);

Additional Parameters:

  • per\_page - number of elements in response, default is 30.
  • previous - this is the last queue on the previous page, it will start from the next one. If queue with specified name doesn’t exist result will contain first per_page queues that lexicographically greater than previous
  • prefix - an optional queue prefix to search on. e.g., prefix=ca could return queues ["cars", "cats", etc.]

Request below will return 20 queues started with "na" but lexicographically greater than "name_of_previous_queue".

int perPage = 20;
String previous = "name_of_previous_queue";
String prefix = "na";
ArrayList<QueueModel> allQueues = Queues.getQueues(client, previous, perPage, prefix);

--

Retrieve Queue Information

QueueModel infoAboutQueue = queue.getInfoAboutQueue();

--

Delete a Message Queue

queue.destroy();

--

Post Messages to a Queue

Single message:

queue.pushMessage(body);

Multiple messages:

String[] messages = {"c", "d"};
Ids ids = queue.pushMessages(messages);

Optional parameters (3rd, array of key-value pairs):

  • timeout: Deprecated. After timeout (in seconds), item will be placed back onto queue. You must delete the message from the queue to ensure it does not go back onto the queue. Default is 60 seconds. Minimum is 30 seconds. Maximum is 86,400 seconds (24 hours).

  • delay: The item will not be available on the queue until this many seconds have passed. Default is 0 seconds. Maximum is 604,800 seconds (7 days).

  • expires_in: How long in seconds to keep the item on the queue before it is deleted. Default is 604,800 seconds (7 days). Maximum is 2,592,000 seconds (30 days).

--

Get Messages from a Queue

Single message:

Message msg = queue.reserve();

Multiple messages:

int count = 5;
Messages messages = queue.reserve(count);

Optional parameters:

  • count: The maximum number of messages to get. Default is 1. Maximum is 100.

--

Touch a Message on a Queue

Touching a reserved message extends its timeout by the duration specified when the message was created, which is 60 seconds by default.

Message message = queue.reserve();
queue.touchMessage(message);

--

Release Message

Message message = queue.reserve();
int delay = 1;
queue.releaseMessage(message, delay);

Optional parameters:

  • delay: The item will not be available on the queue until this many seconds have passed. Default is 0 seconds. Maximum is 604,800 seconds (7 days).

--

Delete a Message from a Queue

Message message = queue.get();
queue.deleteMessage(message);

--

Peek Messages from a Queue

Peeking at a queue returns the next messages on the queue, but it does not reserve them.

Single message:

Messages msg = queue.peek();

Multiple messages:

int count = 2;
Messages msg = queue.peek(count);

--

Clear a Queue

queue.clear();

--

Add alerts to a queue. This is for Pull Queue only.

ArrayList<Alert> alerts = new ArrayList<Alert>();
alerts.add(new Alert(Alert.typeProgressive, Alert.directionAscending, 5, "some_q"));
QueueModel info = queue.updateAlerts(alerts);

--

Push Queues

IronMQ push queues allow you to setup a queue that will push to an endpoint, rather than having to poll the endpoint. Here's the announcement for an overview.

Update a Message Queue

ArrayList<Subscriber> subscribers = new ArrayList<Subscriber>() {{ add(new Subscriber(url)); }};
QueueModel payload = new QueueModel(new QueuePushModel(subscribers, "multicast", 4, 7, "test_err"));
queue.update(payload);

The following parameters are all related to Push Queues:

  • subscribers: An array of subscriber hashes containing url field. This set of subscribers will replace the existing subscribers.
  • retries: How many times to retry on failure. Default is 3. Maximum is 100.
  • retries_delay: Delay between each retry in seconds. Default is 60.

--

Update Queue Subscribers

ArrayList<Subscriber> subscribers = new ArrayList<Subscriber>();
subscribers.add(new Subscriber("http://localhost:3000"));
subscribers.add(new Subscriber("http://localhost:3030"));
queue.updateSubscribers(subscribers);

--

Get Message Push Status

String[] messages = {"test1", "test2"};
Ids ids = queue.pushMessages(messages);
SubscribersInfo subscribersInfo = queue.getPushStatusForMessage(ids.getId(0));

Returns an array of subscribers with status.

--

Acknowledge / Delete Message Push Status

String[] messages = {"test1", "test2"};
Ids ids = queue.pushMssages(messages);
SubscribersInfo subscribersInfo = queue.getPushStatusForMessage(ids.getId(0));
queue.deletePushMessageForSubscriber(ids.getId(0), subscribersInfo.getSubscribers().get(0).id);

--

Further Links


В© 2011 - 2014 Iron.io Inc. All Rights Reserved.