Skip to content

Commit cf9f8fc

Browse files
jbertramtabish121
authored andcommitted
ARTEMIS-5688 set routing-type when creating MQTT subscription queue
1 parent 7296823 commit cf9f8fc

2 files changed

Lines changed: 15 additions & 1 deletion

File tree

  • artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt
  • tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/mqtt5

artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt/MQTTSubscriptionManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ private Queue findOrCreateQueue(BindingQueryResult bindingQueryResult, AddressIn
184184
*/
185185
boolean durable = session.getVersion() == MQTTVersion.MQTT_5 || (session.getVersion() != MQTTVersion.MQTT_5 && !session.isClean());
186186
if (addressInfo.getRoutingTypes().contains(RoutingType.MULTICAST)) {
187-
return session.getServerSession().createQueue(QueueConfiguration.of(queue).setAddress(addressInfo.getName()).setFilterString(getMessageFilter(addressInfo.getName())).setDurable(durable));
187+
return session.getServerSession().createQueue(QueueConfiguration.of(queue).setAddress(addressInfo.getName()).setRoutingType(RoutingType.MULTICAST).setFilterString(getMessageFilter(addressInfo.getName())).setDurable(durable));
188188
}
189189

190190
if (addressInfo.getRoutingTypes().contains(RoutingType.ANYCAST)) {

tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/mqtt5/MQTT5Test.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -924,4 +924,18 @@ public void testSessionCount() throws Exception {
924924
producer.connect();
925925
assertEquals(2, server.getActiveMQServerControl().getSessionCount());
926926
}
927+
928+
@Test
929+
@Timeout(DEFAULT_TIMEOUT_SEC)
930+
public void testSubscriptionQueueRoutingType() throws Exception {
931+
String topic = getName();
932+
String clientID = "myClientId";
933+
server.getAddressSettingsRepository().addMatch(topic, new AddressSettings().setDefaultQueueRoutingType(RoutingType.ANYCAST));
934+
935+
MqttClient subscriber = createPahoClient(clientID);
936+
subscriber.connect();
937+
subscriber.subscribe(topic, AT_LEAST_ONCE);
938+
// ensure the subscription queue uses multicast even though the default is anycast
939+
assertEquals(RoutingType.MULTICAST, getSubscriptionQueue(topic, clientID).getRoutingType());
940+
}
927941
}

0 commit comments

Comments
 (0)