diff --git a/src/main/java/com/rabbitmq/client/BuiltinExchangeType.java b/src/main/java/com/rabbitmq/client/BuiltinExchangeType.java index f64bbe66e..0676e8eda 100644 --- a/src/main/java/com/rabbitmq/client/BuiltinExchangeType.java +++ b/src/main/java/com/rabbitmq/client/BuiltinExchangeType.java @@ -5,7 +5,9 @@ */ public enum BuiltinExchangeType { - DIRECT("direct"), FANOUT("fanout"), TOPIC("topic"), HEADERS("headers"); + DIRECT("direct"), FANOUT("fanout"), TOPIC("topic"), HEADERS("headers"), + CONSISTENT_HASH("x-consistent-hash"), MODULUS_HASH("x-modulus-hash"), + LOCAL_RANDOM("x-local-random"), RANDOM("x-random"); private final String type; diff --git a/src/test/java/com/rabbitmq/client/test/functional/ExchangeDeclare.java b/src/test/java/com/rabbitmq/client/test/functional/ExchangeDeclare.java index 8801a55ec..381b64b33 100644 --- a/src/test/java/com/rabbitmq/client/test/functional/ExchangeDeclare.java +++ b/src/test/java/com/rabbitmq/client/test/functional/ExchangeDeclare.java @@ -19,7 +19,9 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import java.io.IOException; +import java.util.Arrays; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.concurrent.TimeoutException; @@ -101,8 +103,13 @@ public void releaseResources() throws IOException { } private void doTestExchangeDeclaredWithEnumerationEquivalent(Channel channel) throws IOException, InterruptedException { - assertEquals(4, BuiltinExchangeType.values().length, "There are 4 standard exchange types"); - for (BuiltinExchangeType exchangeType : BuiltinExchangeType.values()) { + // Only test AMQP 0-9-1 standard types; plugin and newer core types + // (e.g. x-modulus-hash, x-local-random) may not be available on the test broker + List standardTypes = Arrays.asList( + BuiltinExchangeType.DIRECT, BuiltinExchangeType.FANOUT, + BuiltinExchangeType.TOPIC, BuiltinExchangeType.HEADERS + ); + for (BuiltinExchangeType exchangeType : standardTypes) { channel.exchangeDeclare(NAME, exchangeType); verifyEquivalent(NAME, exchangeType.getType(), false, false, null); channel.exchangeDelete(NAME);