Skip to content

Commit 291eaf6

Browse files
committed
Add --quorum-queue flag
To create quorum queue(s). Fixes #260
1 parent 5e0fc0d commit 291eaf6

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

src/docs/asciidoc/usage-advanced.adoc

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,16 @@ key/value pairs with commas:
1111
bin/runjava com.rabbitmq.perf.PerfTest \
1212
--queue-args x-max-length=10,x-dead-letter-exchange=some.exchange.name
1313

14+
It is possible to use several arguments to
15+
create https://rabbitmq.com/quorum-queues.html[quorum queues], but PerfTest provides
16+
a `--quorum-queue` flag to do that:
17+
18+
bin/runjava com.rabbitmq.perf.PerfTest \
19+
--quorum-queue --queue name
20+
21+
`--quorum-queue` is a shortcut for `--flag persistent --queue-args x-queue-type=quorum --auto-delete false`. Note a quorum queue cannot have a server-generated name, so the
22+
`--queue` argument must be used to specify the name of the queue(s).
23+
1424
== Customising messages
1525

1626
It is possible to customise messages that PerfTest publishes. This allows

src/main/java/com/rabbitmq/perf/PerfTest.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,19 @@ public static void main(String [] args, PerfTestOptions perfTestOptions) {
198198
String urisParameter = strArg(cmd, 'H', null);
199199
String outputFile = strArg(cmd, 'o', null);
200200

201+
Map<String, Object> queueArguments = convertKeyValuePairs(queueArgs);
202+
boolean quorumQueue = hasOption(cmd,"qq");
203+
204+
if (quorumQueue) {
205+
if (!flags.contains("persistent")) {
206+
flags = new ArrayList<>(flags);
207+
flags.add("persistent");
208+
}
209+
autoDelete = false;
210+
queueArguments = queueArguments == null ? new HashMap<>() : queueArguments;
211+
queueArguments.put("x-queue-type", "quorum");
212+
}
213+
201214
ConnectionFactory factory = new ConnectionFactory();
202215
if (disableConnectionRecovery) {
203216
factory.setAutomaticRecoveryEnabled(false);
@@ -337,7 +350,7 @@ public static void main(String [] args, PerfTestOptions perfTestOptions) {
337350
p.setUseMillis( useMillis);
338351
p.setBodyFiles( bodyFiles == null ? null : asList(bodyFiles.split(",")));
339352
p.setBodyContentType( bodyContentType);
340-
p.setQueueArguments(convertKeyValuePairs(queueArgs));
353+
p.setQueueArguments(queueArguments);
341354
p.setConsumerLatencyInMicroseconds(consumerLatencyInMicroseconds);
342355
p.setConsumerLatencies(variableConsumerLatencies);
343356
p.setQueuePattern(queuePattern);
@@ -682,6 +695,7 @@ public static Options getOptions() {
682695

683696
options.addOption(new Option("qf", "queue-file", true, "file to look up queue names from"));
684697
options.addOption(new Option("sni", "server-name-indication", true, "server names for Server Name Indication TLS parameter, separated by commas"));
698+
options.addOption(new Option("qq", "quorum-queue", false,"create quorum queue(s)"));
685699
return options;
686700
}
687701

0 commit comments

Comments
 (0)