- 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 onebeyond#219
- Test on Node 20
- Abandon dependabot (too noisy)
- Bump deps
- Add support for channel level prefetch as per onebeyond#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 onebeyond#206
- Drop support for Node 10
- Introduce eslint-config-airbnb-base
- Fixed issue where a partial password could be logged in debug - See onebeyond#200 - thanks @matt1097
- Fixed issue where channels were not returned to the pool after publishing a large messag - See onebeyond#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 onebeyond#194
- Report validation error when no vhosts are specified - See onebeyond#181
- Clone config instead of freezing it so buffers will work - See onebeyond#92
- Fix schema bug
- Add json schema (lib/config/schema.json) - See onebeyond#168
- Adds support for custom user agents - See onebeyond#170
- Fixes onebeyond#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.unsubscribeAll
orsubscription.cancel
then 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 onebeyond#166
- Moved setMaxListeners to createConnection task to suppress misleading 'Possible EventEmitter memory leak detected' warning. See onebeyond#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 onebeyond#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 onebeyond#156
- Bump dev deps
- Fixed onebeyond#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 onebeyond#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 onebeyond#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
subscribed
event
- emit error when publishFn err Channel closed as oer onebeyond#81. Thanks @zijin-m
- Drop support for Node 6
- Updated dependencies as per onebeyond#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 onebeyond#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 onebeyond#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 onebeyond#17
- This changelog
- License
- Badges
- Upgrading dependencies
The format is based on Keep a Changelog