rascal
Version:
An advanced RabbitMQ / AMQP client built on amqplib
803 lines (446 loc) • 17.4 kB
Markdown
Change Log
# 20.1.1
- npm search algorithm has changed. Updating metadata accordingly.
# 20.1.0
- Ignore and remove immediateNack header based on the xDeath header. See https://github.com/onebeyond/rascal/issues/237
# 20.0.0
- Replaced superagent with native node http client as per https://github.com/onebeyond/rascal/issues/234
# 19.0.0
- I am not aware of any breaking changes in this release, but emitting error events asynchronously could have subtle side effects, hence the major release
- Deprecate session 'cancelled' event in favour of 'cancel' (both will work)
- Refactor reconnection and resubscription code
- Emit errors asynchronously to prevent them being caught by the amqplib main accept loop
- Fix bug which throw an exception in the error handler when a close event was emitted with no error argument
# 18.0.1
- Removed console.log when the channel pool destroyed a channel
- Add streams example
# 18.0.0
- Fixes https://github.com/onebeyond/rascal/issues/227 by requiring special characters to be URL encoded.
- Consolidated broker and management url configuration logic
# 17.0.2
- Update guidesmiths references to onebeyond.
- Dedupe channel poole ready check
- Remove unnecessary subscription config from busy publisher example
- Fixed bug where hostname connection order was not properly randomised
# 17.0.1
- Rework the republish and forward recovery strategies to remove remote chance of repeat ack/nack
# 17.0.0
- Updated the configuration processing as per https://github.com/onebeyond/rascal/issues/219
- Test on Node 20
- Abandon dependabot (too noisy)
- Bump deps
- Add support for channel level prefetch as per https://github.com/onebeyond/rascal/issues/221
- Dropped prettier (it does nothing of the sort!)
# 16.3.0
- Simplify logic which determines whether ackOrNack should be a callback or a promise
- Report repeated calls to ackOrNack
- Bump deps
# 16.2.0
- Disable indirect dependabot updates (they're almost pointless for modules since package-lock.json isn't published)
- Support acknowledging / rejecting all outstanding messages
# 16.1.2
- Add consumer tag subscription option to JSON schema
# 16.1.1
- Updated README
- Removed debug
# 16.1.0
- Added concurrency option for managing RabbitMQ topology. Rascal will create and use upto this number of channels when asserting/checking/deleting/purging queues, exchanges and bindings.
# 16.0.0
- Automatically set replyTo message property when a publication references a replyTo queue
- Stop prefixing binding keys with replyTo uuid
- Drop support for Node 12
# 15.0.1
- Fix MaxListenersExceeded warning when there are more than 10 vhosts - See https://github.com/onebeyond/rascal/issues/206
# 15.0.0
- Drop support for Node 10
- Introduce eslint-config-airbnb-base
# 14.4.5
- Fixed issue where a partial password could be logged in debug - See https://github.com/onebeyond/rascal/issues/200 - thanks @matt1097
# 14.4.4
- Fixed issue where channels were not returned to the pool after publishing a large messag - See https://github.com/onebeyond/rascal/issues/199
# 14.4.3
- Bump dependencies
- superagent
- chance
- zUnit
- debug
- generic-pool
- lru-cache
- xregexp
- stashback
- chalk
- amqplib
# 14.4.2
- Remove timeout for filling the channel pool since generic-pool already has this option.
# 14.4.1
- Bump dependencies / fix audit warnings
- Fix busy publisher example to consistenly use regular channels - See https://github.com/onebeyond/rascal/issues/194
# 14.4.0
- Report validation error when no vhosts are specified - See https://github.com/onebeyond/rascal/issues/181
# 14.3.0
- Clone config instead of freezing it so buffers will work - See https://github.com/onebeyond/rascal/issues/92
# 14.2.1
- Fix schema bug
# 14.2.0
- Add json schema (lib/config/schema.json) - See https://github.com/onebeyond/rascal/issues/168
# 14.1.0
- Adds support for custom user agents - See https://github.com/onebeyond/rascal/issues/170
# 14.0.1
- Fixes https://github.com/onebeyond/rascal/issues/178
# 14.0.0
- Rather than waiting an arbitrary time for channels to close when cancelling a subscription, Rascal now waits until any outstanding messages have been acknowledged. By default, Rascal will wait indefinitely, but this behaviour can be overriden by specifying a subscription.closeTimeout. If the timeout is exceeded following a direct call to `broker.unsubscribeAll` or `subscription.cancel` then an error will be yielded. If the timeout is exceeded following an indirect call to `subscription.cancel` (e.g. by `broker.shutdown`) then an error will be emitted but the operation will be allowed to continue.
- Messages which cannot be recovered by the republish or forward strategies are nacked resulting in message loss unless a dead letter is configured.
# 13.1.4
- Fixed potential for returned messages cause the forward error strategy to yield twice
- Report returned messages from republish error strategy
- Tweak prettier rules
# 13.1.3
- Fixed minor memory leak in recovery strategy loop
- Move to prettier
- Remove unnecessary eslint install from github
# 13.1.2
- Fixed various issues when queue names contained period characters. Reported in https://github.com/onebeyond/rascal/issues/166
# 13.1.1
- Moved setMaxListeners to createConnection task to suppress misleading 'Possible EventEmitter memory leak detected' warning. See https://github.com/onebeyond/rascal/issues/164 for more details.
# 13.1.0
- Fixed bug where Rascal could wait indefinitely for channels to be destroyed if shutdown was called following a heartbeat timeout. See https://github.com/onebeyond/rascal/issues/158 for more details.
# 13.0.6
- Fixed bug where Rascal attempted to remove a listener from a nulled connection and crashed.
# 13.0.5
- Set channel pool acquireTimeoutMillis in default configuration - thanks @matej-prokop
- Add snyk package health badge
# 13.0.4
- Fixed https://github.com/onebeyond/rascal/issues/156
# 13.0.3
- Bump dev deps
# 13.0.2
- Fixed https://github.com/onebeyond/rascal/issues/150
# 13.0.1
- Improved readme
- Update zUnit
# 13.0.0
- Switched to eslint-config-esnext and updated style
- Update production dependencies
- Fix vhost management cluster support
# 12.0.4
- Bump dev dependencies
- Upgraded to husky 5
# 12.0.3
- Fix https://github.com/onebeyond/rascal/issues/141
- Fix error message typos
- Bump lodash
# 12.0.2
- Exclude various files (including the 12M cc-test-reporter binary) from the npm package.
# 12.0.1
- Moved from travis to github actions
- Fix broker waiting indefinitely when shutdown is called after losing a connection. See [#126](https://github.com/onebeyond/rascal/issues/126)
# 12.0.0
- Removed node 8 support
# 11.0.1
- Replaced mocha with zunit
# 11.0.0
- Reworked tests to remove mocha --exit flag
- Exposed partially initialied brokerAsPromised on the rejected error via a symbol
- clear keep active interval on broker nuke
- Updated engine >= 8.0.0
# 10.2.6
## Updated
- Dependencies
- Removing Synk
# 10.2.5
## Updated
- Improved readme as per issue [#111](https://github.com/onebeyond/rascal/issues/111)
## Fixed
- Fixed issue [#123](https://github.com/onebeyond/rascal/issues/123), where a race condition was causing channels to be closed twice. Thanks @cinnq346.
# 10.2.4
## Fixed
- Fixed issue [#122](https://github.com/onebeyond/rascal/issues/122), where error listeners were registered once, so repeated errors could bubble up and crash node
# 10.2.3
## Fixed
- Fixed second part of issue [#121](https://github.com/onebeyond/rascal/issues/121), where the generic-pool could cause tight loops and memory leaks
# 10.2.2
## Fixed
- Fixed issue [#121](https://github.com/onebeyond/rascal/issues/121), which caused rascals connection index to permanently increment rather than cycling back to 0. Consequently if all nodes in a cluster failed, Rascal could crash the application.
# 10.2.1
## Updated
- Support amqplib 0.6.0
# 10.2.0
## Added
- Added broker.getConnections()
## Updated
- Updated dependencies
# 10.1.0
## Added
- Added publication statistics
- Support for node 14
# 10.0.1
## Updated
- Set vhost max event listeners to inifinity (see https://github.com/onebeyond/rascal/issues/99)
# 10.0.0
## Updated
- Using rascal to consume messages published with broker.forward no longer restores original routing headers by default, unless used in the context of a recovery strategy. See the broker.forward section of the readme for more information.
# 9.4.0
## Added
- vhost_initialised event
- publication paused notifications
- publication.abort
## Updated
- broker error events now include vhost connection details
# 9.3.0
## Updated
- [Fixed #78](https://github.com/onebeyond/rascal/issues/78) by using a baseline config, and only laying connection options via withDefaultConfig
# 9.2.0
## Added
- [Fixed #93](https://github.com/onebeyond/rascal/issues/93) through use of setInterval to keep node process active in the event of broker restart.
## Updated
- Dependencies
- Patched lodash
- Added snyk
# 9.1.3
## Updated
- Fixed bug where channels were destroyed instead of returned to the pool
# 9.1.2
## Updated
- Test to see whether setTimeout.unref is available before calling it
# 9.1.1
## Added
- Expose cloned subscription config on session
# 9.1.0
## Added
- Optionally promisify ackOrNack
# 9.0.0
## Updated
- Broker functions (publish, forward, nuke, etc) no longer return the broker.
## Added
- Added broker.subscribeAll
# 8.2.0
## Added
- Publication timeouts (default value is 10 seconds).
# 8.1.0
## Updated
- Fixed [#86](https://github.com/onebeyond/rascal/issues/85)
- Fixed [#84](https://github.com/onebeyond/rascal/issues/84). Thanks @huikaihoo
## Added
- Added a new subscription `subscribed` event
# 8.0.1
## Updated
- emit error when publishFn err Channel closed as oer https://github.com/onebeyond/rascal/pull/81. Thanks @zijin-m
# 8.0.0
## Updated
- Drop support for Node 6
- Updated dependencies as per https://github.com/onebeyond/rascal/pull/75. Thanks @ravihara
# 7.0.0
## Updated
- Rascal attempts to resubscribe following a consumer cancel. See the README for more details
- Undocumented SubscriberSession.close function has been removed (Use .cancel instead)
# 6.0.3
## Fixed
- Fixed [#72](https://github.com/onebeyond/rascal/issues/72) which meant published messages waiting for a channel would be lost on connection error
# 6.0.2
## Fixed
- Fixed bug that caused management credentials to be ignored. Thanks @juliendangers
# 6.0.1
## Updated
# 6.0.0
- Improved channel pool management (includes a breaking config change - see https://github.com/onebeyond/rascal#channel-pooling).
# 5.1.0
## Added
- Added potential for flow control / throttling via broker 'busy' and 'ready' events.
# 5.0.0
## Updated
- Wait for subscriber channels to be closed before shutting down the broker
- Reduced default close channel deferral from 1 minute to 10 seconds in default config and from 1 minute to 100ms in test config
# 4.7.0
## Updated
- Dependencies
## Added
- Support for active/passive connection management
# 4.6.2
## Fixed
- Fixed a bug where you could not re-initialise a vhost
# 4.6.1
## Added
- Automated codeclimate reporting
## Fixed
- Fixed a bug where the connection index could be undefined
# 4.6.0
## Updated
- Fixes for #60 and #61. Thanks @rossj.
- Depend on amqplib ^0.5.5
# 4.5.2
## Updated
- Depend on version 0.5.3 of amqplib (peer) until https://github.com/squaremo/amqp.node/issues/534 is fixed
# 4.5.1
## Updated
- Depend on version 0.5.3 of amqplib until https://github.com/squaremo/amqp.node/issues/534 is fixed
- Update dependencies
# 4.5.0
## Updated
- Replaced request with superagent. Thanks @ksnll
- Updated dependencies
- Added node 12 to travis config
# 4.4.0
## Updated
- Throw error when using cluster based redeliveries counter outside of a cluster
# 4.3.1
## Updated
- Dependencies
- Moved amqplib to peer dependency
# Added
- broker.connect(vhost)
# 4.2.1
## Updated
- Dependencies
- Fixed vararg related bug in Broker.create
# 4.2.2
## Updated
- Updated various dev dependencies
- Readme
- Switched from istanbul to nyc
- Fix flakey travis tests
# 4.2.1
## Updated
- Updated lodash
# 4.2.0
## Added
- Support for RabbitMQs default exchange
# 4.1.0
## Added
- Publisher error events are passed the messageId where possible
# 4.0.0
## Updated
- Improved connection failure error message
- It is possible to go async between broker.subscribe and subscription.on('message'). This unlocks the possibility of promise support.
- Support promises
- Discourage use of broker.init
# 3.2.3
## Updated
- Fix connection handler leak caused by re-subscription
- Fix channel leak when channel.consume fails
- amqplib version to 0.5.3
- test on Node 11
# 3.2.2
## Added
- Some additional debug
# 3.2.1
## Fixed
- Catch and return encryption errors via publish callback
## Added
- Assert vhosts into exhistence using the RabbitMQ management API
## Updated
- Changed new Buffer() to Buffer.from to silence Node 10 deprecation warning
# 3.2.0
## Added
- Transparent encryption / decryption
# 3.1.3
## Updated
- Modernise code style
# 3.1.2
## Updated
- Fix redelivery counter defaults
# 3.1.1
## Updated
- Fix channelMax default
# 3.1.0
## Added
- Handling of redelivery counter errors and timeouts
# 3.0.0
## Updated
- Using lodash defaultsDeep instead of merge-defaults (fixes hoek vulnerability). The behaviour seems consistent but releasing as a breaking change as a precaution.
- Unqualified default publications and subscriptions are no longer supported. See https://github.com/onebeyond/rascal/issues/20
- Testing on node 10
# 2.12.2
## Updated
- Update dependencies (fixes hoek vulnerability)
# 2.12.1
## Updated
- Fixed bug that prevented publication from emitting channel errors
# 2.12.0
## Updated
- Update dependencies
- Update dev dependencies
# 2.11.3
## Updated
- npm issue
# 2.11.2
## Updated
- npm issue
# 2.11.1
## Fixed
- Fixed undefined error in Vhost.bounce
# 2.11.0
## Fixed
- Support for queue and exchange names containeing period and hyphens
# 2.10.0
## Fixed
- Workaround for non deterministic amqplib channel handling, see https://github.com/squaremo/amqp.node/issues/388
# 2.9.0
## Fixed
- Randomising vhost connections on startup rather than on each connection request
# 2.8.0
## Fixed
- Workaround for non deterministic amqplib connection handling, see https://github.com/squaremo/amqp.node/issues/388
# 2.7.0
## Added
- AckOrNack emits/returns an error if an attempt was made to ack/nack a message using a closed channel
- Adjusting default connection_timeout and channel_max url parameters
# 2.6.0
## Added
- Exponential backoff for re-connections and channel re-subscriptions
- Fixed typo in deprecation warning
# 2.5.0
## Fixed
- Subscriber session could attempt to ack/nack messages using a closed channel. Leaving the channel open for 1 minute after cancelling subscription.
# 2.4.0
## Added
- Socket options can be specified in the vhost connection configuration. Connection timeout defaults to 1 minute.
# 2.3.2
## Updated
- Use self instead of this for code which called broker.nuke without binding context
# 2.3.1
## Updated
- Updated dependences
# 2.3.0
## Added
- Broker.unsubscribeAll to remove subscriptons. Mostly useful for automated tests
# 2.2.0
## Added
- Decorate inbound messages with originalVhost header
# 2.1.0
## Added
- Default publications and subscriptions are marked with an autoCreated flag
## Changed
- Default publications and subscriptions are are qualified with the vhost
## Deprecated
- Unqualified publications and subscriptions have been deprecated. A console.warn is logged once per subscription and publication but can be disabled by setting RASCAL_DISABLE_ALL_DEPRECATION_WARNINGS=true or RASCAL_DISABLE_UNQUALIFIED_NAME_DEPRECATION_WARNING=true
# 2.0.0
## Fixed
- Connection pool was leaking connections following a connection error. With a pool size of 1, this locked up all publishers
- Listening to close and error events caused multiple channels to be created which appears to result in an unknown delivery tag error. See https://github.com/squaremo/amqp.node/issues/271
- Incorrect documenation said to listen for invalid_content, but in reality the event was invalid_message. Now emitting invalid_message only if invalid_content is not handled.
- Fixed examples
# 1.4.1
## Fixed
- confirmPoolSize option as per https://github.com/onebeyond/rascal/pull/19
# 1.4.0
## Added
- Listing to connection close events as per #18
- Fixed bug with configuration which caused vhost config errors to be masked
# 1.3.1
## Added
- Channel pooling (makes publishing much faster)
## Updated
- Dependencies
# 1.2.1
## Updated
- Used wrong argument in callback
# 1.2.0
## Added
- Workaround for https://github.com/onebeyond/rascal/issues/17
# 1.1.0
## Added
- This changelog
- License
- Badges
- Upgrading dependencies
The format is based on [Keep a Changelog](http://keepachangelog.com/)