rascal 13.1.0 → 13.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3 -0
- package/README.md +5 -2
- package/lib/amqp/Vhost.js +0 -1
- package/lib/amqp/tasks/createConnection.js +2 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
## 13.1.1
|
|
4
|
+
- Moved setMaxListeners to createConnection task to suppress misleading 'Possible EventEmitter memory leak detected' warning. See https://github.com/guidesmiths/rascal/issues/164 for more details.
|
|
5
|
+
|
|
3
6
|
## 13.1.0
|
|
4
7
|
- Fixed bug where Rascal could wait indefinitely for channels to be destroyed if shutdown was called following a heartbeat timeout. See https://github.com/guidesmiths/rascal/issues/158 for more details.
|
|
5
8
|
|
package/README.md
CHANGED
|
@@ -39,13 +39,16 @@ Rascal seeks to either solve these problems, make them easier to deal with or br
|
|
|
39
39
|
* TDD support
|
|
40
40
|
|
|
41
41
|
## Concepts
|
|
42
|
-
Rascal extends the existing [RabbitMQ Concepts](https://www.rabbitmq.com/tutorials/amqp-concepts.html) of Brokers, Vhosts, Exchanges Queues, Channels and Connections with with two new ones
|
|
42
|
+
Rascal extends the existing [RabbitMQ Concepts](https://www.rabbitmq.com/tutorials/amqp-concepts.html) of Brokers, Vhosts, Exchanges, Queues, Channels and Connections with with two new ones
|
|
43
43
|
|
|
44
44
|
1. Publications
|
|
45
45
|
1. Subscriptions
|
|
46
46
|
|
|
47
47
|
A **publication** is a named configuration for publishing a message, including the destination queue or exchange, routing configuration, encryption profile and reliability guarantees, message options, etc. A **subscription** is a named configuration for consuming messages, including the source queue, encryption profile, content encoding, delivery options (e.g. acknowledgement handling and prefetch), etc. These must be [configured](#configuration) and supplied when creating the Rascal broker. After the broker has been created the subscriptions and publications can be retrivied from the broker and used to publish and consume messages.
|
|
48
48
|
|
|
49
|
+
### Special Note
|
|
50
|
+
RabbitMQ 3.8.0 introduced [quorum queues](https://www.rabbitmq.com/quorum-queues.html). Although quorum queues may not be suitable in all situations, they provide [poison message handling](https://www.rabbitmq.com/quorum-queues.html#poison-message-handling) without the need for an external [redelivery counter](https://github.com/guidesmiths/rascal#dealing-with-redeliveries) and offer better data safety in the event of a network partition. You can read more about them [here](https://www.cloudamqp.com/blog/reasons-you-should-switch-to-quorum-queues.html) and [here](https://blog.rabbitmq.com/posts/2020/06/quorum-queues-local-delivery).
|
|
51
|
+
|
|
49
52
|
## Examples
|
|
50
53
|
|
|
51
54
|
### Async/Await
|
|
@@ -1135,7 +1138,7 @@ Rascal can be configured to automatically decrypt inbound messages.
|
|
|
1135
1138
|
Any message that was published using the "well-known-v1" encryption profile will be automatically decrypted by the subscriber.
|
|
1136
1139
|
|
|
1137
1140
|
#### Dealing With Redeliveries
|
|
1138
|
-
If your app crashes before acknowledging a message, the message will be rolled back. It is common for node applications to automatically restart, however if the crash was caused by something in the message content, it will crash and restart indefinitely, thrashing the host.
|
|
1141
|
+
If your app crashes before acknowledging a message, the message will be rolled back. It is common for node applications to automatically restart, however if the crash was caused by something in the message content, it will crash and restart indefinitely, thrashing the host. Prior to version 3.8.0, RabbitMQ didn't allow you to limit the number of redeliveries per message or provide a redelivery count. This is now possible using [quorum queues](https://www.rabbitmq.com/quorum-queues.html#poison-message-handling), but for those on older versions, or in situations where quorum queues are not appropriate, subscribers can be configured with a redelivery counter and will update the ```message.properties.headers.rascal.redeliveries``` header with the number of hits. If the number of redeliveries exceeds the subscribers limit, the subscriber will emit a "redeliveries_exceeded" event, and can be handled by your application. e.g.
|
|
1139
1142
|
|
|
1140
1143
|
```json
|
|
1141
1144
|
"subscriptions": {
|
package/lib/amqp/Vhost.js
CHANGED
|
@@ -392,7 +392,6 @@ function Vhost(config) {
|
|
|
392
392
|
|
|
393
393
|
channel._rascal_id = channelId;
|
|
394
394
|
channel.connection._rascal_id = connection._rascal_id;
|
|
395
|
-
channel.connection.setMaxListeners(0);
|
|
396
395
|
debug('Created %s channel: %s from connection: %s', getChannelMode(confirm), channel._rascal_id, connection._rascal_id);
|
|
397
396
|
|
|
398
397
|
// See https://github.com/squaremo/amqp.node/issues/388
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rascal",
|
|
3
|
-
"version": "13.1.
|
|
3
|
+
"version": "13.1.1",
|
|
4
4
|
"description": "A config driven wrapper for amqplib supporting multi-host connections, automatic error recovery, redelivery flood protection, transparent encryption / decryption, channel pooling and publication timeouts",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"dependencies": {
|