From 0ca77fb8c9ada2e4cf89390cabe01abaa555fe4d Mon Sep 17 00:00:00 2001 From: Frederic Frasch Date: Tue, 4 Feb 2025 09:28:36 +0100 Subject: [PATCH] Added dynamic priority support for jms similar to amqp --- .../reactive/messaging/jms/JmsSink.java | 4 +++ .../jms/OutgoingJmsMessageMetadata.java | 26 ++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/smallrye-reactive-messaging-jms/src/main/java/io/smallrye/reactive/messaging/jms/JmsSink.java b/smallrye-reactive-messaging-jms/src/main/java/io/smallrye/reactive/messaging/jms/JmsSink.java index 5c628d6d07..6a64b817d4 100644 --- a/smallrye-reactive-messaging-jms/src/main/java/io/smallrye/reactive/messaging/jms/JmsSink.java +++ b/smallrye-reactive-messaging-jms/src/main/java/io/smallrye/reactive/messaging/jms/JmsSink.java @@ -137,6 +137,7 @@ private Uni> send(JmsResourceHolder resourceHo Destination dest = metadata.getDestination(); int deliveryMode = metadata.getDeliveryMode(); String type = metadata.getType(); + final Integer priority = metadata.getPriority(); JmsProperties properties = metadata.getProperties(); if (correlationId != null) { outgoing.setJMSCorrelationID(correlationId); @@ -156,6 +157,9 @@ private Uni> send(JmsResourceHolder resourceHo if (type != null) { outgoing.setJMSType(type); } + if (priority != null) { + resourceHolder.getClient().setPriority(priority); + } if (properties != null) { if (!(properties instanceof JmsPropertiesBuilder.OutgoingJmsProperties)) { diff --git a/smallrye-reactive-messaging-jms/src/main/java/io/smallrye/reactive/messaging/jms/OutgoingJmsMessageMetadata.java b/smallrye-reactive-messaging-jms/src/main/java/io/smallrye/reactive/messaging/jms/OutgoingJmsMessageMetadata.java index 7e34ff8c0f..bc4f81237d 100644 --- a/smallrye-reactive-messaging-jms/src/main/java/io/smallrye/reactive/messaging/jms/OutgoingJmsMessageMetadata.java +++ b/smallrye-reactive-messaging-jms/src/main/java/io/smallrye/reactive/messaging/jms/OutgoingJmsMessageMetadata.java @@ -9,6 +9,7 @@ public class OutgoingJmsMessageMetadata implements JmsMessageMetadata { private final Destination destination; private final int deliveryMode; private final String type; + private final Integer priority; private final JmsProperties properties; public OutgoingJmsMessageMetadata(String correlationId, Destination replyTo, Destination destination, @@ -18,6 +19,18 @@ public OutgoingJmsMessageMetadata(String correlationId, Destination replyTo, Des this.destination = destination; this.deliveryMode = deliveryMode; this.type = type; + this.priority = null; + this.properties = properties; + } + + public OutgoingJmsMessageMetadata(final String correlationId, final Destination replyTo, final Destination destination, + final int deliveryMode, final String type, final Integer priority, final JmsProperties properties) { + this.correlationId = correlationId; + this.replyTo = replyTo; + this.destination = destination; + this.deliveryMode = deliveryMode; + this.type = type; + this.priority = priority; this.properties = properties; } @@ -46,6 +59,10 @@ public String getType() { return type; } + public Integer getPriority() { + return priority; + } + @Override public JmsProperties getProperties() { return properties; @@ -61,6 +78,7 @@ public static final class OutgoingJmsMessageMetadataBuilder { private Destination destination; private int deliveryMode = -1; private String type; + private Integer priority; private JmsProperties properties; public OutgoingJmsMessageMetadataBuilder withCorrelationId(String correlationId) { @@ -88,13 +106,19 @@ public OutgoingJmsMessageMetadataBuilder withType(String type) { return this; } + public OutgoingJmsMessageMetadataBuilder withPriority(final Integer priority) { + this.priority = priority; + return this; + } + public OutgoingJmsMessageMetadataBuilder withProperties(JmsProperties properties) { this.properties = properties; return this; } public OutgoingJmsMessageMetadata build() { - return new OutgoingJmsMessageMetadata(correlationId, replyTo, destination, deliveryMode, type, properties); + return new OutgoingJmsMessageMetadata(correlationId, replyTo, destination, deliveryMode, type, priority, + properties); } } }