Message properties like PROPERTY_TTL, PROPERTY_RETRY_THRESHOLD,
PROPERTY_RETRY_DELAY and PROPERTY_CONSUME_TIMEOUT can also be
defined globally per consumer for all queue messages.
When defined, message instance properties always takes precedence over consumer properties.
Message instance TTL property.
const { Message } = require('redis-smq');
const message = new Message();
message.getTTL(); // the same as
message.getProperty(Message.PROPERTY_TTL);Message instance retry threshold property.
const { Message } = require('redis-smq');
const message = new Message();
message.getRetryThreshold(); // the same as
message.getProperty(Message.PROPERTY_RETRY_TRESHOLD);Message instance retry delay property.
const { Message } = require('redis-smq');
const message = new Message();
message.getRetryDelay(); // the same as
message.getProperty(Message.PROPERTY_RETRY_DELAY);Message instance consumption timeout property.
const { Message } = require('redis-smq');
const message = new Message();
message.getConsumeTimeout(); // the same as
message.getProperty(Message.PROPERTY_CONSUME_TIMEOUT);Message instance body property.
const { Message } = require('redis-smq');
const message = new Message();
message.getBody(); // the same as
message.getProperty(Message.PROPERTY_BODY);Message instance ID property.
const { Message } = require('redis-smq');
const message = new Message();
message.getId(); // the same as
message.getProperty(Message.PROPERTY_UUID);Message instance attempts property.
const { Message } = require('redis-smq');
const message = new Message();
message.getAttempts(); // the same as
message.getProperty(Message.PROPERTY_ATTEMPTS);Message instance creation timestamp property.
const { Message } = require('redis-smq');
const message = new Message();
message.getCreatedAt(); // the same as
message.getProperty(Message.PROPERTY_CREATED_AT);Message instance scheduled CRON property.
const { Message } = require('redis-smq');
const message = new Message();
message.getMessageScheduledCRON(); // the same as
message.getProperty(Message.PROPERTY_SCHEDULED_CRON);Message instance scheduled delay property.
const { Message } = require('redis-smq');
const message = new Message();
message.getMessageScheduledDelay(); // the same as
message.getProperty(Message.PROPERTY_SCHEDULED_DELAY);Message instance scheduled period property.
const { Message } = require('redis-smq');
const message = new Message();
message.getMessageScheduledPeriod(); // the same as
message.getProperty(Message.PROPERTY_SCHEDULED_PERIOD);Message instance scheduled repeat property.
const { Message } = require('redis-smq');
const message = new Message();
message.getMessageScheduledRepeat(); // the same as
message.getProperty(Message.PROPERTY_SCHEDULED_REPEAT);Message instance scheduled repeat count property.
const { Message } = require('redis-smq');
const message = new Message();
message.getMessageScheduledRepeatCount(); // the same as
message.getProperty(Message.PROPERTY_SCHEDULED_REPEAT_COUNT);Message instance delayed property. true when the message has been delayed, otherwise false.
const { Message } = require('redis-smq');
const message = new Message();
message.isDelayed(); // the same as
message.getProperty(Message.PROPERTY_DELAYED);This method is used to created a new message instance based on an existing message instance but with a new ID.
const { Message } = require('redis-smq');
const message = new Message();
message.setScheduledRepeat(6); // Schedule the message for delivery 6 times
message.setScheduledPeriod(1); // Wait for one second after each delivery
const newMessage = Message.createFromMessage(message);
console.log(newMessage.getId() === message.getId()); // false
console.log(newMessage.getMessageScheduledPeriod() === message.getMessageScheduledPeriod()); // true
console.log(newMessage.getMessageScheduledRepeat() === message.getMessageScheduledRepeat()); // trueSet the time in seconds to wait after the start time to wait before scheduling the message again.
Message scheduled period can be set together with message scheduled repeat.
const { Message } = require('redis-smq');
const message = new Message();
message.setScheduledRepeat(6); // Schedule the message for delivery 6 times
message.setScheduledPeriod(1); // Wait for one second after each deliverySet the time in seconds that a message will wait before being scheduled for delivery.
const { Message } = require('redis-smq');
const message = new Message();
message.setScheduledDelay(60); // in secondsSet message scheduling using a CRON expression.
CRON scheduling takes priority over delay scheduling.
CRON scheduling can be combined with repeat and period scheduling. For example if we want a message to be delivered 5 times every hour with a 10 seconds delay between each message we can do:
const { Message } = require('redis-smq');
const message = new Message();
message.setScheduledCron('0 0 * * * *'); // Schedule message for delivery every hour
message.setScheduledRepeat(5);
message.setScheduledPeriod(10);Set the number of times to repeat scheduling a message for delivery.
const { Message } = require('redis-smq');
const message = new Message();
message.setScheduledRepeat(6); // integerSet the amount of time in milliseconds for which the message can live in the message queue.
const { Message } = require('redis-smq');
const message = new Message();
message.setTTL(3600000); // in millisecondsSet the number of times the message can be re-queued after failure.
const { Message } = require('redis-smq');
const message = new Message();
message.setRetryThreshold(10);Set the amount of time in seconds to wait for before re-queuing a failed message.
const { Message } = require('redis-smq');
const message = new Message();
message.setRetryDelay(60); // 1 minuteSet the amount of time, in milliseconds, for consuming a message.
const { Message } = require('redis-smq');
const message = new Message();
message.setConsumeTimeout(30000); // 30 secondsSet message body property which contains the payload/data associated with the message.
The message body type can be of any supported JavaScript type.
const { Message } = require('redis-smq');
const message = new Message();
message.setBody(123);
message.setBody({hello: 'world'});
message.setBody('hello world');
message.setBody('hello world');Get message body.
const { Message } = require('redis-smq');
const message = new Message();
message.setBody(123);
message.getBody(); // 123Get message ID.
const { Message } = require('redis-smq');
const message = new Message();
message.getId(); // c53d1766-0e56-4362-8aab-ef70c4eb03adGet message TTL.
const { Message } = require('redis-smq');
const message = new Message();
message.getTTL(); // null
message.setTTL(6000);
message.getTTL(); // 6000Get message retry threshold.
const { Message } = require('redis-smq');
const message = new Message();
message.getRetryThreshold(); // null
message.setRetryThreshold(10);
message.getRetryThreshold(); // 10Get message retry delay.
const { Message } = require('redis-smq');
const message = new Message();
message.getRetryDelay(); // null
message.setRetryDelay(60);
message.getRetryDelay(); // 60Get message consumption timeout.
const { Message } = require('redis-smq');
const message = new Message();
message.getConsumeTimeout(); // null
message.setConsumeTimeout(30000);
message.getConsumeTimeout(); // 30000Get message creation timestamp.
const { Message } = require('redis-smq');
const message = new Message();
message.getCreatedAt(); // 1530613595087 (in milliseconds)Get message scheduled repeat.
const { Message } = require('redis-smq');
const message = new Message();
message.setScheduledRepeat(6);
message.getMessageScheduledRepeat(); // 6Get message scheduled period.
const { Message } = require('redis-smq');
const message = new Message();
message.setScheduledRepeat(6); // Schedule the message for delivery 6 times
message.setScheduledPeriod(1); // Wait for one second after each delivery
message.getMessageScheduledPeriod(); // 1Get message scheduled CRON entry.
const { Message } = require('redis-smq');
const message = new Message();
message.setScheduledCron('*/10 * * * * *'); // Schedule message for delivery each 10 seconds
message.getMessageScheduledCRON(); // '*/10 * * * * *'Check if the message has been delayed.
A message is delayed when it has been for some time in the scheduler queue and then removed and enqueued for delivery.
const { Message } = require('redis-smq');
const message = new Message();
message.isDelayed(); // falseGet a message property by specifying its name. This method is an alternative to other existing getters methods
(like getTTL(), getCreatedAt(), etc.).
const { Message } = require('redis-smq');
const message = new Message();
message.setScheduledCron('*/10 * * * * *'); // Schedule message for delivery each 10 seconds
message.getProperty(Message.PROPERTY_SCHEDULED_CRON); // '*/10 * * * * *'
message.getProperty(Message.PROPERTY_CREATED_AT); // 1530613595087toString() method is called when the message object is to be represented as a text value or when the message
is referred to in a manner in which a string is expected.
This method converts convert the message object to a JSON string.
const { Message } = require('redis-smq');
const message = new Message();
message.setScheduledCron('*/10 * * * * *'); // Schedule message for delivery each 10 seconds
message.getProperty(Message.PROPERTY_SCHEDULED_CRON); // '*/10 * * * * *'
message.toString(); //