Skip to content

Commit 5d95dbc

Browse files
committed
Merge branch 'live' into stable
2 parents c2fa66f + a9eb349 commit 5d95dbc

12 files changed

+85
-47
lines changed

site/backup.md

+2-12
Original file line numberDiff line numberDiff line change
@@ -113,18 +113,8 @@ copy the messages, skip copying the [message directories](#manual-messages-backu
113113

114114
### <a id="manual-definitions-restore" class="anchor" href="#manual-definitions-restore">Restoring from a Manual Definitions Backup</a>
115115

116-
Internal node database stores node's name in certain records. Should node name change, the database must first
117-
be updated to reflect the change using the following [rabbitmqctl](./cli.html) command:
118-
119-
<pre class="lang-sh">
120-
rabbitmqctl rename_cluster_node &lt;oldnode&gt; &lt;newnode&gt;
121-
</pre>
122-
123-
The command can take multiple old name/new name pairs if multiple nodes in a cluster are being renamed
124-
at the same time.
125-
126-
When a new node starts with a backed up directory and a matching node name, it should perform
127-
the upgrade steps as needed and proceed booting.
116+
To perform a restore, a new node starts with a backed up directory and the original node name.
117+
The node then should perform the upgrade steps as needed and proceed booting.
128118

129119

130120
## <a id="messages-backup" class="anchor" href="#messages-backup">Backing Up Messages</a>

site/channels.md

+10
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,16 @@ closed.
127127

128128
When a channel's connection is closed, so is the channel.
129129

130+
If a channel is closed immediately after a consumer [acknowledged a number of deliveries](/confirms.html) on it,
131+
the acknowledgements may or may not reach their target queue before the channel is terminated.
132+
In this case the messages with a pending acknowledgement on the channel will be automatically requeued
133+
following the channel closure.
134+
135+
This scenario usually applies to workloads with short lived channels. Using long lived channels and
136+
designing consumers in a way that they can handle redeliveries potential surprises may be
137+
associated with this edge case behavior. Note that redelivered messages will be [explicitly marked as such](/consumers.html#message-properties).
138+
139+
130140
### <a id="error-handling" class="anchor" href="#error-handling">Channels and Error Handling</a>
131141

132142
In the section above channels were closed by applications. There is another way a channel can

site/configure.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -1363,14 +1363,14 @@ under the `rabbit` section.
13631363
<td><code>msg_store_file_size_limit</code></td>
13641364
<td>
13651365
Message store segment file size. Changing this for a node
1366-
with an existing (initialised) database is dangerous can
1366+
with an existing (initialised) database is dangerous and can
13671367
lead to data loss!
13681368
<p>
13691369
Default: <code>16777216</code>
13701370
<pre class="lang-erlang">
13711371
{rabbit, [
13721372
%% Changing this for a node
1373-
%% with an existing (initialised) database is dangerous can
1373+
%% with an existing (initialised) database is dangerous and can
13741374
%% lead to data loss!
13751375
{msg_store_file_size_limit, 16777216}
13761376
]}

site/devtools.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ Miscellaneous projects:
232232

233233
* [Chef RabbitMQ Cookbook](https://github.com/rabbitmq/chef-cookbook)
234234
* [Puppet RabbitMQ Module](https://github.com/puppetlabs/puppetlabs-rabbitmq)
235-
* [RabbitMQ Docker image](https://registry.hub.docker.com/_/rabbitmq/)
235+
* [RabbitMQ Docker image](https://hub.docker.com/_/rabbitmq/)
236236
* [Kurtosis Starlark package](https://github.com/kurtosis-tech/rabbitmq-package)
237237

238238
## <a id="database-integration" class="anchor" href="#database-integration">Database Integration</a>

site/download.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ limitations under the License.
2020
The latest [release](https://github.com/rabbitmq/rabbitmq-server/releases) of RabbitMQ is **&version-server;**. See [change log](changelog.html) for release notes.
2121
See [RabbitMQ support timeline](./versions.html) to find out what release series are supported.
2222

23-
Experimenting with RabbitMQ on your workstation? Try the [community Docker image](https://registry.hub.docker.com/_/rabbitmq/):
23+
Experimenting with RabbitMQ on your workstation? Try the [community Docker image](https://hub.docker.com/_/rabbitmq/):
2424

2525
<pre class="lang-bash">
2626
# latest RabbitMQ 3.12
@@ -73,7 +73,7 @@ Other guides related to Kubernetes:
7373

7474
## Docker
7575

76-
* Docker community-maintained [RabbitMQ Docker image](https://registry.hub.docker.com/_/rabbitmq/) ([on GitHub](https://github.com/docker-library/rabbitmq/))
76+
* Docker community-maintained [RabbitMQ Docker image](https://hub.docker.com/_/rabbitmq/) ([on GitHub](https://github.com/docker-library/rabbitmq/))
7777

7878

7979
## Cloud

site/ec2.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ Please consult the installation guides for
7171
A wide variety of deployment tools can be used to automate
7272
RabbitMQ deployment.
7373

74-
* [Community Docker image](https://registry.hub.docker.com/_/rabbitmq/) ([on GitHub](https://github.com/docker-library/rabbitmq))
74+
* [Community Docker image](https://hub.docker.com/_/rabbitmq/) ([on GitHub](https://github.com/docker-library/rabbitmq))
7575
* [Chef cookbook](https://github.com/rabbitmq/chef-cookbook)
7676
* [Puppet module](https://github.com/puppetlabs/puppetlabs-rabbitmq)
7777

site/getstarted.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ applications using RabbitMQ.
2222

2323
You need to have the RabbitMQ server installed to go through
2424
the tutorials, please see the [installation guide](download.html) or
25-
use the [Docker image](https://registry.hub.docker.com/_/rabbitmq/).
25+
use the [Docker image](https://hub.docker.com/_/rabbitmq/).
2626

2727
Executable versions of these tutorials [are open source](https://github.com/rabbitmq/rabbitmq-tutorials),
2828
as is [this website](https://github.com/rabbitmq/rabbitmq-website).

site/java-tools.md

+6-6
Original file line numberDiff line numberDiff line change
@@ -21,22 +21,22 @@ This page documents some Java-based utility programs (PerfTest, Tracer).
2121

2222
## <a id="load-testing" class="anchor" href="#load-testing">PerfTest</a>
2323

24-
RabbitMQ has a throughput testing tool, PerfTest, that is based on the Java client and can be
24+
RabbitMQ has a throughput testing tool, [PerfTest](https://github.com/rabbitmq/rabbitmq-perf-test/), that is based on the Java client and can be
2525
configured to simulate basic and advanced workloads as well.
2626

27-
PerfTest documentation is hosted on GitHub Pages:
27+
PerfTest Documentation:
2828

2929
* For [the latest stable release](https://perftest.rabbitmq.com/)
30-
* For [the latest milestone release](https://rabbitmq.github.io/rabbitmq-perf-test/milestone/htmlsingle/)
3130
* For [the latest development build](https://perftest-dev.rabbitmq.com/)
3231

3332
## <a id="stream-load-testing" class="anchor" href="#stream-load-testing">PerfTest for Streams (RabbitMQ Stream Protocol)</a>
3433

35-
There is a separate version of PerfTest for streams that uses [RabbitMQ Stream Protocol](./stream.html) internally.
34+
There is a separate version of [PerfTest for streams](https://github.com/rabbitmq/rabbitmq-stream-perf-test/) that uses [RabbitMQ Stream Protocol](./stream.html) internally.
3635

37-
Its documentation is hosted on GitHub Pages:
36+
Stream PerfTest Documentation:
3837

39-
* For [the latest stable release](https://rabbitmq.github.io/rabbitmq-stream-java-client/stable/htmlsingle/#the-performance-tool)
38+
* For [the latest stable release](https://rabbitmq.github.io/rabbitmq-stream-perf-test/stable/htmlsingle/)
39+
* For [the latest development build](https://rabbitmq.github.io/rabbitmq-stream-perf-test/snapshot/htmlsingle/)
4040

4141

4242
## <a id="tracer" class="anchor" href="#tracer">Tracer</a>

site/kubernetes/operator/operator-overview.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# &product-name; Kubernetes Operators: Cluster Operator and Message Topology Operator
1+
# &product-name; Kubernetes Operators: Cluster Operator and Messaging Topology Operator
22

33
The RabbitMQ team develop and maintain two [kubernetes operators](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/): the RabbitMQ Cluster Kubernetes Operator and the RabbitMQ Messaging Topology Operator.
44

site/mqtt.md

+4
Original file line numberDiff line numberDiff line change
@@ -604,6 +604,10 @@ When the Sparkplug support is enabled, the MQTT plugin will not translate the
604604

605605
## <a id="limitations" class="anchor" href="#limitations">Limitations</a>
606606

607+
### QoS 2 is Not Supported
608+
609+
QoS 2 subscriptions will be treated as if they were QoS 1 subscriptions.
610+
607611
### Presence of a Quorum of Nodes
608612

609613
See [Consensus Features](#consensus).

site/quorum-queues.md

+3-7
Original file line numberDiff line numberDiff line change
@@ -151,11 +151,7 @@ no sense in their context. Therefore quorum queues cannot be exclusive.
151151

152152
Quorum queues are not meant to be used as [temporary queues](./queues.html#temporary-queues).
153153

154-
#### TTL (before RabbitMQ 3.10)
155-
156-
Before RabbitMQ 3.10, quorum queues supported [Queue TTL](./ttl.html#queue-ttl), but do not message TTL.
157-
158-
#### TTL (since RabbitMQ 3.10)
154+
#### Queue and Per-Message TTL (since RabbitMQ 3.10)
159155

160156
Quorum queues support both [Queue TTL](./ttl.html#queue-ttl) and message TTL
161157
(including [Per-Queue Message TTL in Queues](./ttl.html#per-queue-message-ttl) and
@@ -730,7 +726,7 @@ The following `advanced.config` example modifies all values listed above:
730726
%% five replicas by default, only makes sense for nine node clusters
731727
{rabbit, [{quorum_cluster_size, 5},
732728
{quorum_commands_soft_limit, 512}]}
733-
]
729+
].
734730
</pre>
735731

736732

@@ -857,4 +853,4 @@ the block device that hosts RabbitMQ node data directory:
857853
#
858854
# Sets readahead for device /dev/sda to 4096.
859855
sudo blockdev --setra 4096 /dev/sda
860-
</pre>
856+
</pre>

site/ttl.md

+52-14
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,17 @@ See the License for the specific language governing permissions and
1515
limitations under the License.
1616
-->
1717

18-
# Time-To-Live and Expiration
18+
# Time-to-Live and Expiration
19+
20+
Key topics covered in this documentation guide are
21+
22+
* An overview of queue TTL and message TTL features supported by RabbitMQ
23+
* Per-queue [message TTL defined at the queue level](#per-queue-message-ttl)
24+
* Per-message [TTL defined by publishers](#per-message-ttl-in-publishers)
25+
* [Message TTL and dead lettering](#message-ttl-dead-lettering)
26+
* [Message TTL applied retroactively](#message-ttl-applied-retroactively)
27+
* [Queue TTL](#queue-ttl) (expiration of queues)
28+
1929

2030
## <a id="overview" class="anchor" href="#overview">Time-To-Live Feature</a>
2131

@@ -29,13 +39,10 @@ TTL can also be set on queues, not just queue contents. This feature can be used
2939

3040
Queues will expire after a period of time only when they are not used (a queue is used if it has online consumers).
3141

32-
Expired messages and queues will be deleted.
33-
3442
TTL behavior is controlled by [optional queue arguments](queues.html) and the best way to configure it is using a [policy](./parameters.html).
3543

3644
TTL settings also can be enforced by [operator policies](./parameters.html#operator-policies).
3745

38-
The follow on information in this topic describes how to define message TTL for queues, per-message TTL in publishers, the caveats, and how to define queue TTL.
3946

4047
## <a id="per-queue-message-ttl" class="anchor" href="#per-queue-message-ttl">Per-Queue Message TTL in Queues</a>
4148

@@ -44,14 +51,15 @@ Message TTL can be set for a given queue by setting the
4451
or by specifying the same argument at the time of queue declaration.
4552

4653
A message that has been in the queue for longer than the configured TTL is said to
47-
be *dead*. Note that a message routed to multiple queues
48-
can die at different times, or not at all, in each queue in
54+
be *expired*. Note that a message routed to multiple queues
55+
can expire at different times, or not at all, in each queue in
4956
which it resides. The death of a message in one queue has no
5057
impact on the life of the same message in other queues.
5158

52-
The server guarantees that dead messages will not be delivered
53-
using `basic.deliver` (to a consumer) or included into a `basic.get-ok` response
54-
(for one-off fetch operations).
59+
The server **guarantees** that expired messages will not be delivered
60+
using `basic.deliver` (to a consumer) or sent in response to a polling consumer
61+
(in a `basic.get-ok` response).
62+
5563
Further, the server will try to remove messages at or
5664
shortly after their TTL-based expiry.
5765

@@ -106,7 +114,7 @@ model.QueueDeclare("myqueue", false, false, false, args);
106114
</pre>
107115

108116
It is possible to apply a message TTL policy to a queue which already
109-
has messages in it but this involves [some caveats](#per-message-ttl-caveats).
117+
has messages in it but this involves [some caveats](#per-message-ttl-applied-retroactively).
110118

111119
The original expiry time of a message is preserved if it
112120
is requeued (for example due to the use of an AMQP method
@@ -121,6 +129,7 @@ the RabbitMQ server does not support. Unlike that flag, no
121129
`basic.return`s are issued, and if a dead letter
122130
exchange is set then messages will be dead-lettered.
123131

132+
124133
## <a id="per-message-ttl-in-publishers" class="anchor" href="#per-message-ttl-in-publishers">Per-Message TTL in Publishers</a>
125134

126135
A TTL can be specified on a per-message basis, by setting the
@@ -159,13 +168,42 @@ model.BasicPublish(exchangeName,
159168
routingKey, props,
160169
messageBodyBytes);</pre>
161170

162-
## <a id="per-message-ttl-caveats" class="anchor" href="#per-message-ttl-caveats">Caveats</a>
171+
172+
## <a id="message-ttl-dead-lettering" class="anchor" href="#message-ttl-dead-lettering">Per-Message TTL and Dead Lettering</a>
173+
174+
For queues that have [dead-lettering configured](./dlx.html), it is important to understand
175+
when message expiration and dead lettering kick in for every queue type. Since
176+
queue types have different design goals and implementations, they drop
177+
expired messages (or dead letter them) under different conditions.
178+
179+
### Quorum Queues
180+
181+
[Quorum queues](./quorum-queues.html) dead letter expired messages shortly after message expiration.
182+
"Shortly after" here means that the process of dead-lettering, that is,
183+
republishing to the configured [DLX](./dlx.html), happens concurrently with
184+
other queue activity and does not await the moment when the expired
185+
message reaches the head of the queue.
186+
187+
Note that **overall system load** and the **volume of expired messages**
188+
can affect how long it might take for deadl lettering prcedure to start
189+
and to to complete.
190+
191+
### Classic Queues
192+
193+
Classic queues dead letter expired messages in a few cases:
194+
195+
* When message reaches queue head
196+
* When the queue is notified of a policy change that affects it
197+
198+
199+
## <a id="message-ttl-applied-retroactively" class="anchor" href="#message-ttl-applied-retroactively">Per-message TTL Applied Retroactively (to an Existing Queue)</a>
163200

164201
Queues that had a per-message TTL applied to them
165202
retroactively (when they already had messages) will discard
166-
the messages when specific events occur. Only when expired
167-
messages reach the head of a queue will they actually be
168-
discarded (or dead-lettered). Consumers will not have
203+
the messages when specific events occur.
204+
205+
Only when expired messages reach the head of a queue will they actually be
206+
discarded (marked for deletion). Consumers will not have
169207
expired messages delivered to them. Keep in mind that
170208
there can be a natural race condition between message expiration
171209
and consumer delivery, e.g. a message can expire

0 commit comments

Comments
 (0)