- Bump node version used in publish build action.
- BREAKING: Drop Node.js 14 support (EOL since April 2023). Minimum Node.js version is now 16.
- Remove codeclimate (it's been sold) until we have time to replace get it working again.
- npm search algorithm has changed. Updating metadata accordingly.
- Ignore and remove immediateNack header based on the xDeath header. See #237
- Replaced superagent with native node http client as per #234
- 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
- Removed console.log when the channel pool destroyed a channel
- Add streams example
- Fixes #227 by requiring special characters to be URL encoded.
- Consolidated broker and management url configuration logic
- 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
- Rework the republish and forward recovery strategies to remove remote chance of repeat ack/nack
- Updated the configuration processing as per #219
- Test on Node 20
- Abandon dependabot (too noisy)
- Bump deps
- Add support for channel level prefetch as per #221
- Dropped prettier (it does nothing of the sort!)
- Simplify logic which determines whether ackOrNack should be a callback or a promise
- Report repeated calls to ackOrNack
- Bump deps
- Disable indirect dependabot updates (they're almost pointless for modules since package-lock.json isn't published)
- Support acknowledging / rejecting all outstanding messages
- Add consumer tag subscription option to JSON schema
- Updated README
- Removed debug
- 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.
- Automatically set replyTo message property when a publication references a replyTo queue
- Stop prefixing binding keys with replyTo uuid
- Drop support for Node 12
- Fix MaxListenersExceeded warning when there are more than 10 vhosts - See #206
- Drop support for Node 10
- Introduce eslint-config-airbnb-base
- Fixed issue where a partial password could be logged in debug - See #200 - thanks @matt1097
- Fixed issue where channels were not returned to the pool after publishing a large messag - See #199
- Bump dependencies
- superagent
- chance
- zUnit
- debug
- generic-pool
- lru-cache
- xregexp
- stashback
- chalk
- amqplib
- Remove timeout for filling the channel pool since generic-pool already has this option.
- Bump dependencies / fix audit warnings
- Fix busy publisher example to consistenly use regular channels - See #194
- Report validation error when no vhosts are specified - See #181
- Clone config instead of freezing it so buffers will work - See #92
- Fix schema bug
- Add json schema (lib/config/schema.json) - See #168
- Adds support for custom user agents - See #170
- Fixes #178
- 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.unsubscribeAllorsubscription.cancelthen an error will be yielded. If the timeout is exceeded following an indirect call tosubscription.cancel(e.g. bybroker.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.
- Fixed potential for returned messages cause the forward error strategy to yield twice
- Report returned messages from republish error strategy
- Tweak prettier rules
- Fixed minor memory leak in recovery strategy loop
- Move to prettier
- Remove unnecessary eslint install from github
- Fixed various issues when queue names contained period characters. Reported in #166
- Moved setMaxListeners to createConnection task to suppress misleading 'Possible EventEmitter memory leak detected' warning. See #164 for more details.
- Fixed bug where Rascal could wait indefinitely for channels to be destroyed if shutdown was called following a heartbeat timeout. See #158 for more details.
- Fixed bug where Rascal attempted to remove a listener from a nulled connection and crashed.
- Set channel pool acquireTimeoutMillis in default configuration - thanks @matej-prokop
- Add snyk package health badge
- Fixed #156
- Bump dev deps
- Fixed #150
- Improved readme
- Update zUnit
- Switched to eslint-config-esnext and updated style
- Update production dependencies
- Fix vhost management cluster support
- Bump dev dependencies
- Upgraded to husky 5
- Fix #141
- Fix error message typos
- Bump lodash
- Exclude various files (including the 12M cc-test-reporter binary) from the npm package.
- Moved from travis to github actions
- Fix broker waiting indefinitely when shutdown is called after losing a connection. See #126
- Removed node 8 support
- Replaced mocha with zunit
- 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
- Dependencies
- Removing Synk
- Improved readme as per issue #111
- Fixed issue #123, where a race condition was causing channels to be closed twice. Thanks @cinnq346.
- Fixed issue #122, where error listeners were registered once, so repeated errors could bubble up and crash node
- Fixed second part of issue #121, where the generic-pool could cause tight loops and memory leaks
- Fixed issue #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.
- Support amqplib 0.6.0
- Added broker.getConnections()
- Updated dependencies
- Added publication statistics
- Support for node 14
- Set vhost max event listeners to inifinity (see #99)
- 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.
- vhost_initialised event
- publication paused notifications
- publication.abort
- broker error events now include vhost connection details
- Fixed #78 by using a baseline config, and only laying connection options via withDefaultConfig
- Fixed #93 through use of setInterval to keep node process active in the event of broker restart.
- Dependencies
- Patched lodash
- Added snyk
- Fixed bug where channels were destroyed instead of returned to the pool
- Test to see whether setTimeout.unref is available before calling it
- Expose cloned subscription config on session
- Optionally promisify ackOrNack
- Broker functions (publish, forward, nuke, etc) no longer return the broker.
- Added broker.subscribeAll
- Publication timeouts (default value is 10 seconds).
- Added a new subscription
subscribedevent
- emit error when publishFn err Channel closed as oer #81. Thanks @zijin-m
- Drop support for Node 6
- Updated dependencies as per #75. Thanks @ravihara
- Rascal attempts to resubscribe following a consumer cancel. See the README for more details
- Undocumented SubscriberSession.close function has been removed (Use .cancel instead)
- Fixed #72 which meant published messages waiting for a channel would be lost on connection error
- Fixed bug that caused management credentials to be ignored. Thanks @juliendangers
- Improved channel pool management (includes a breaking config change - see https://github.com/onebeyond/rascal#channel-pooling).
- Added potential for flow control / throttling via broker 'busy' and 'ready' events.
- 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
- Dependencies
- Support for active/passive connection management
- Fixed a bug where you could not re-initialise a vhost
- Automated codeclimate reporting
- Fixed a bug where the connection index could be undefined
- Fixes for #60 and #61. Thanks @rossj.
- Depend on amqplib ^0.5.5
- Depend on version 0.5.3 of amqplib (peer) until amqp-node/amqplib#534 is fixed
- Depend on version 0.5.3 of amqplib until amqp-node/amqplib#534 is fixed
- Update dependencies
- Replaced request with superagent. Thanks @ksnll
- Updated dependencies
- Added node 12 to travis config
- Throw error when using cluster based redeliveries counter outside of a cluster
- Dependencies
- Moved amqplib to peer dependency
- broker.connect(vhost)
- Dependencies
- Fixed vararg related bug in Broker.create
- Updated various dev dependencies
- Readme
- Switched from istanbul to nyc
- Fix flakey travis tests
- Updated lodash
- Support for RabbitMQs default exchange
- Publisher error events are passed the messageId where possible
- 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
- 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
- Some additional debug
- Catch and return encryption errors via publish callback
- Assert vhosts into exhistence using the RabbitMQ management API
- Changed new Buffer() to Buffer.from to silence Node 10 deprecation warning
- Transparent encryption / decryption
- Modernise code style
- Fix redelivery counter defaults
- Fix channelMax default
- Handling of redelivery counter errors and timeouts
- 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 #20
- Testing on node 10
- Update dependencies (fixes hoek vulnerability)
- Fixed bug that prevented publication from emitting channel errors
- Update dependencies
- Update dev dependencies
- npm issue
- npm issue
- Fixed undefined error in Vhost.bounce
- Support for queue and exchange names containeing period and hyphens
- Workaround for non deterministic amqplib channel handling, see amqp-node/amqplib#388
- Randomising vhost connections on startup rather than on each connection request
- Workaround for non deterministic amqplib connection handling, see amqp-node/amqplib#388
- 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
- Exponential backoff for re-connections and channel re-subscriptions
- Fixed typo in deprecation warning
- Subscriber session could attempt to ack/nack messages using a closed channel. Leaving the channel open for 1 minute after cancelling subscription.
- Socket options can be specified in the vhost connection configuration. Connection timeout defaults to 1 minute.
- Use self instead of this for code which called broker.nuke without binding context
- Updated dependences
- Broker.unsubscribeAll to remove subscriptons. Mostly useful for automated tests
- Decorate inbound messages with originalVhost header
- Default publications and subscriptions are marked with an autoCreated flag
- Default publications and subscriptions are are qualified with the vhost
- 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
- 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 amqp-node/amqplib#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
- confirmPoolSize option as per #19
- Listing to connection close events as per #18
- Fixed bug with configuration which caused vhost config errors to be masked
- Channel pooling (makes publishing much faster)
- Dependencies
- Used wrong argument in callback
- Workaround for #17
- This changelog
- License
- Badges
- Upgrading dependencies
The format is based on Keep a Changelog