README
Softlayer Message Queue API Module for Node.js
**NOTE:**This is not official release from Softlayer, an IBM Company. Use this module at your own risk. Owner is not responsible for any kind of damage. Please refer http://sldn.softlayer.com/reference/messagequeueapi for more details.
To use this library you need a Softlayer message queue credential details, Which contain Account ID, User name & API key.The client has the following features:
Queue
- Creates a new queue
- Pushes a message to a queue
- Pops messages from a queue
- Get details of a queue
- Lists all queues
- Deletes a message from a queue
- Deletes a queue
Topic
- Creates a new topic
- Adds a subscription to a topic
- Pushes a message to a topic
- Lists all topics
- Get details of a topic
- Lists subscriptions on a topic
- Deletes a subscription
- Deletes a topic
Account
- Authenticate and receive an auth token
- Show Requests/Notifications made for the current account
Other
- Ping the service
Installation
$ npm install softlayer-message-queue
Usages
Creates a new Client
var mq = require('softlayer-message-queue');
//Create a new client using accountID, UserName & API Key
var client = new mq.MessageClient(<accountID>, <UserName>, <API Key>);
//Set Datacenter to Get Endpoint. Please pass 'true' to get private endpoint url and 'false' to use public url.
client.SetDataCenter(mq.DataCenterEndpoint.DAL05,false);
After creating a client you have to call client.Authenticate() to authenticate the client, it will provide a API Token and this API token will be used in consecutive call.
Creates a new queue
var queue = new mq.Queue("testQueue1",100,5000,["testTags"]);
client.CreateQueue(queue,function(statusCode,result)
{
console.log(statusCode);
console.log(result);
});
Pushes a message to a queue
var message = new mq.Message("<body>",{"field": "value"},1000,30000);
client.PushMessage("testQueue1",message, function (statusCode,result)
{
console.log(statusCode);
console.log(result);
})
Pops messages from a queue
client.PopMessage("testQueue1",1, function (statusCode,result)
{
console.log(statusCode);
console.log(result);
})
Get details of a queue
client.GetQueue("testQueue1",function(statusCode,queueDetails)
{
console.log(queueDetails)
});
Lists all queues
client.GetQueueList(function(statusCode,queueList)
{
console.log(queueList)
})
Lists all queues By Tag
client.GetQueueListByTag("tag2,testTags",function(statusCode,result)
{
console.log(result)
})
Deletes a message from a queue
client.DeleteMessage("testQueue1","f3f2ebacfbd3b67a430943972c4966eb", function (statusCode,result)
{
console.log(statusCode);
console.log(result);
})
Modify a queue
client.GetQueue("testQueue1",function(statusCode,queueDetails){
queueDetails.visibility_interval = 123;
queueDetails.expiration = 321;
queueDetails.tags.push('tag5');
queueDetails.tags.pop();
client.ModifyQueue(queueDetails,function(statusCode,result){
console.log(statusCode);
console.log(result);
});
})
Deletes a queue
client.DeleteQueue("testQueue1",true,function(statusCode,result)
{
console.log(statusCode);
console.log(result);
})
Creates a new topic
var topic = new mq.Topic('example_topic',["tag1", "tag2", "tag3"])
client.CreateTopic(topic, function (statusCode, result){
console.log(statusCode);
console.log(result);
})
Adds a subscription to a topic
//For Http Topic Subscription
var httpTopicSubscription = new mq.HttpTopicSubscription(mq.
HttpTopicSubscriptionMethod.Get,"url","param","headers","body");
client.CreateTopicSubscription("example_topic", httpTopicSubscription,function (statusCode, result) {
console.log(JSON.stringify(result));
})
//For Queue Topic Subscription
var queueTopicSubscription = new mq.QueueTopicSubscription("test_Queue");
client.CreateTopicSubscription("example_topic_queue", queueTopicSubscription,function (statusCode, result) {
console.log(JSON.stringify(result));
})
Pushes a message to a topic
var message = new mq.Message("<body>",{"field": "value"},1000,30000);
client.PublishToTopic("example_topic", message,function (statusCode, result) {
console.log(JSON.stringify(result));
})
Lists all topics
client.GetTopicList(function (statusCode, result) {
console.log(statusCode);
console.log(result);
})
Lists all topics By Tag
client.GetTopicListByTag("tag2,testTags",function (statusCode, result) {
console.log(statusCode);
console.log(result);
})
Get details of a topic
client.GetTopic("example_topic",function (statusCode, result) {
console.log(statusCode);
console.log(result);
})
Lists subscriptions on a topic
client.GetTopicSubscriptionList(("example_topic",function (statusCode, result) {
console.log(statusCode);
console.log(result);
})
Deletes a subscription
client.DeleteTopicSubscription(("example_topic","subscriptionID",function (statusCode, result) {
console.log(statusCode);
console.log(result);
})
Modify a topic
client.GetTopic("testQueue1",function(statusCode,topicDetails){
topicDetails.tags.pop()
client.ModifyTopic(topicDetails,function(statusCode,result){
console.log(statusCode);
console.log(result);
});
})
Deletes a topic
client.DeleteTopic("testQueue1",true,function(statusCode,topicDetails){
console.log(statusCode);
console.log(result);
});
Authenticate and receive an auth token
client.Authenticate(function(statusCode,accessToken)
{
console.log(statusCode);
console.log(result);
})
Show Requests/Notifications made for the current account
Available AccountStatsDurationType : Past_Hour,Past_Day,Past_Week,Past_Month
client.GetAccountStatistics(mq.AccountStatsDurationType.Past_Hour,function(statusCode,result)
{
console.log(JSON.stringify(result));
})
Ping the service
mq.Ping(function (statusCode, result)
{
console.log(statusCode);
console.log(result);
})
Error Handling
Every method returns HTTP StatusCode alongwith data. so you can easily use statusCode to handle the error.