diff --git a/spring-jms/src/main/java/org/springframework/jms/core/JmsClient.java b/spring-jms/src/main/java/org/springframework/jms/core/JmsClient.java index 1c71e9f1a7d..e44b653f4ee 100644 --- a/spring-jms/src/main/java/org/springframework/jms/core/JmsClient.java +++ b/spring-jms/src/main/java/org/springframework/jms/core/JmsClient.java @@ -28,21 +28,55 @@ import org.springframework.messaging.converter.MessageConverter; /** * A fluent {@code JmsClient} with common send and receive operations against a JMS - * destination. This is effectively an alternative to {@link JmsMessagingTemplate}, - * also delegating to Spring's {@link JmsTemplate} for performing actual operations. + * destination, dealing with Spring's common {@link Message} or with payload values. + * This is effectively an alternative to {@link JmsMessagingTemplate}, also + * delegating to Spring's {@link JmsTemplate} for performing actual operations. * *

Note: Operations in this interface throw {@link MessagingException} instead of * the JMS-specific {@link org.springframework.jms.JmsException}, aligning with the * {@code spring-messaging} module and its other client operation handles. + * Message conversion is preferably done through the common {@link MessageConverter} + * but can also be customized at the {@link JmsTemplate#setMessageConverter} level. * *

This client provides reusable operation handles which can be configured with * custom QoS settings. Note that any use of such explicit settings will override * administrative provider settings (see {@link JmsTemplate#setExplicitQosEnabled}). * + *

An example for sending a converted payload to a queue: + *

+ * client.destination("myQueue")
+ *     .withTimeToLive(1000)
+ *     .send("myPayload");  // optionally with a headers Map next to the payload
+ * 
+ * + *

An example for receiving a converted payload from a queue: + *

+ * Optional<String> payload = client.destination("myQueue")
+ *     .withReceiveTimeout(1000)
+ *     .receive(String.class);
+ * 
+ * + *

An example for sending a message with a payload to a queue: + *

+ * Message<?> message =
+ *      MessageBuilder.withPayload("myPayload").build();  // optionally with headers
+ * client.destination("myQueue")
+ *     .withTimeToLive(1000)
+ *     .send(message);
+ * 
+ * + *

An example for receiving a message with a payload from a queue: + *

+ * Optional<Message<?>> message = client.destination("myQueue")
+ *     .withReceiveTimeout(1000)
+ *     .receive();
+ * 
+ * * @author Juergen Hoeller * @since 7.0 * @see JmsTemplate * @see JmsMessagingTemplate + * @see org.springframework.messaging.support.MessageBuilder */ interface JmsClient {