This project adheres to Semantic Versioning.
Nothing yet!
- The
advancedCallMs
option had no effect unless passed to TimeoutExtender directly, which no sane person would do. - The
noExtensionsAfterSecs
option defaulted to zero, which led to messages never being auto-extended unless a custom value was passed.
- The
advancedCallMs
option to tweak how far in advance of a message's VisibilityTimeout that a ChangeVisibilityTimeout call will be made
- A possible scenario where someone could set the visibilityTimeoutSecs ultra low and cause timers to be set for negative milliseconds
- The option
noExtensionsAfterSecs
now defaults to seconds instead of milliseconds
- The
autoExtendFail
event, fired when the TimeoutExtender fails to change the VisibilityTimeout of a message due to the message no longer existing or being expired. This event may encompass more errors in the future.
- TimeoutExtender no longer continually tries to extend messages that SQS has reported as previously deleted or expired. Instead, messages are removed from the list on this error, and a
autoExtendFail
event is emitted. - TimeoutExtender no longer tries to extend the timeout beyond AWS's maximum message lifetime.
- Message now passes an instance of itself to the handled call, fixing cases where the message would not be emitted with the "handled" event.
- TimeoutExtender now passes seconds to
changeMessageVisibility
instead of milliseconds. AWS didn't like that.
- The
deleted
event, fired when a message has been confirmed to be successfully deleted - The
delQueued
event, fired when a message deletion has been queued up for the next batch - The
handled
event, fired when a message has been handled by any means (kept, deleted, or released) - The
released
event, fired when a message has been confirmed to be successfully released back for immediate availability - The TimeoutExtender feature, which can automatically extend the VisibilityTimeout of any message that has not yet been handled. See README for details!
- The
autoExtendTimeout
andnoExtensionsAfterSecs
options to support the TimeoutExtender feature - The
getQueueVisibilityTimeout
function. Intuitively, this gets the queue's VisibilityTimeout. opts.SQS
now supports an instance of the SQS client class in addition to a constructor (cwhenderson20)
- BREAKING: The
deleteMessage
method now requires a Message object to be passed to it; not just the receiptHandle - BREAKING: The
releaseMessage
method now requires a Message object to be passed to it; not just the receiptHandle - BREAKING: The
handledMessage
method now requires a Message object to be passed to it - The
start()
function now returns a Promise that resolves when the poller has started
- You can now pass an SQS constructor from your own aws-sdk version instead of using the one packaged with Squiss (cwhenderson20)
- The visibilityTimeout of a received message can now be changed with
squiss.changeMessageVisibility
andmessage.changeVisibility
(tothandras) - A message can now be returned to the queue and made immediately available with
message.release
(tothandras) - Messages can also be returned to the queue with immediate availablility through
squiss.releaseMessage
- Deleting messages by handle now works. The Message ID used will be the position of the message in the delete queue, 1-indexed. (#13)
- Tests now use dirty-chai to work around Chai's cardinal sin of allowing nonexistent assertions to be called without error
- Tests now use chai-as-promised to assert promise results
- The
gotMessages
event, which fires when Squiss retrieves a new batch of messages from SQS - The
maxInFlight
event, which fires when Squiss stops requesting new messages due to hitting the maxInFlight cap - The
aborted
event, which fires when stop() is called during an active SQS receive message request - Documentation for the already-existing
drained
event - Documentation for the already-existing
sqs
property - New option:
activePollIntervalMs
, allowing SQS requests to be spaced out when the queue has messages - New option:
idlePollIntervalMs
, allowing SQS requests to be spaced out when the queue is empty getQueueUrl
method to retrieve the configured queue's URL, even if only the name was provided to the constructorcreateQueue
method to create the configured queuedeleteQueue
method to delete the configured queuesendMessage
method to send a message to the configured queuesendMessages
method to send an array of messages of any size (within reason) to the configured queuedeleteMessage
now accepts a ReceiptHandle string in lieu of a Message object, allowing messages to be deleted later without caching the full message itself.
- Dropped support for Node 0.12. For Node 0.12 support, consider compiling with an ES6 transpiler such as Babel, or using version 0.7.
- Switched codebase to native ES6, updating to newest TechnologyAdvice style guide
stop()
now aborts any ongoing receiveMessage request by default. It also accepts asoft
argument (boolean) to soft-stop the poller without the abort functionality.opts.visibilityTimeout
has been renamed toopts.visibilityTimeoutSecs
for consistency.
- pollRetryMs has been added to automatically restart the poller after a failed call to get new messages (dannyrscott)
- maxInFlight can now be set to 0 to uncap message flow (dannyrscott)
- In low-volume use cases, the delete timer would only fire once, and all other deletes depended on filling the queue (dannyrscott)
- Messages failed to stream appropriately when maxInFlight === receiveBatchSize (dannyrscott)
- Specifying unwrapSns now provides message.topicArn and message.topicName.
- Specifying unwrapSns now provides the SNS subject in the message.subject property (dannyrscott)
- An SQS request that ends with no messages now causes
queueEmpty
to be emitted with no arguments (dannyrscott)
- Squiss no longer crashes when no messages are found. Apparently we should have said "high volume only" instead of just "high volume".
- opts.correctQueueUrl added to support dynamic testing environments.
- opts.msgFormat is now opts.bodyFormat to avoid confusion.
- Initial release