Class AmqpClientMessageHandler

java.lang.Object
org.springframework.integration.context.IntegrationObjectSupport
org.springframework.integration.handler.MessageHandlerSupport
org.springframework.integration.handler.AbstractMessageHandler
org.springframework.integration.handler.AbstractMessageProducingHandler
org.springframework.integration.handler.AbstractReplyProducingMessageHandler
org.springframework.integration.amqp.outbound.AmqpClientMessageHandler
All Implemented Interfaces:
org.reactivestreams.Subscriber<org.springframework.messaging.Message<?>>, org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanClassLoaderAware, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.DisposableBean, org.springframework.beans.factory.InitializingBean, org.springframework.context.ApplicationContextAware, org.springframework.core.Ordered, org.springframework.integration.context.ComponentSourceAware, org.springframework.integration.context.ExpressionCapable, org.springframework.integration.context.Orderable, org.springframework.integration.core.MessageProducer, org.springframework.integration.handler.HeaderPropagationAware, org.springframework.integration.IntegrationPattern, org.springframework.integration.support.context.NamedComponent, org.springframework.integration.support.management.IntegrationManagement, org.springframework.integration.support.management.TrackableComponent, org.springframework.messaging.MessageHandler, reactor.core.CoreSubscriber<org.springframework.messaging.Message<?>>

public class AmqpClientMessageHandler extends org.springframework.integration.handler.AbstractReplyProducingMessageHandler
An AbstractReplyProducingMessageHandler implementation for AMQP 1.0 client.

With the AbstractReplyProducingMessageHandler.setRequiresReply(boolean) configured as true, this message handler behaves as a gateway - the RPC over AMQP. In this case, when replyPayloadTypeExpression is provided, the messageConverter must be an instance of SmartMessageConverter.

This handler is async by default.

In async mode, the error is sent to the error channel even if not in a gateway mode.

The exchangeExpression, routingKeyExpression and queueExpression are optional. In this case they have to be supplied by the AsyncAmqpTemplate.

Since:
7.0
  • Nested Class Summary

    Nested classes/interfaces inherited from class org.springframework.integration.handler.AbstractReplyProducingMessageHandler

    org.springframework.integration.handler.AbstractReplyProducingMessageHandler.RequestHandler

    Nested classes/interfaces inherited from interface org.springframework.integration.support.management.IntegrationManagement

    org.springframework.integration.support.management.IntegrationManagement.ManagementOverrides
  • Field Summary

    Fields inherited from class org.springframework.integration.handler.AbstractMessageProducingHandler

    messagingTemplate

    Fields inherited from class org.springframework.integration.context.IntegrationObjectSupport

    EXPRESSION_PARSER, logger

    Fields inherited from interface org.springframework.integration.support.management.IntegrationManagement

    METER_PREFIX, RECEIVE_COUNTER_NAME, SEND_TIMER_NAME

    Fields inherited from interface org.springframework.core.Ordered

    HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
  • Constructor Summary

    Constructors
    Constructor
    Description
    AmqpClientMessageHandler(org.springframework.amqp.core.AsyncAmqpTemplate amqpTemplate)
    Construct an instance with the provided AsyncAmqpTemplate.
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
     
     
    protected @Nullable Object
    handleRequestMessage(org.springframework.messaging.Message<?> requestMessage)
     
    void
    setExchange(String exchange)
     
    void
    setExchangeExpression(org.springframework.expression.Expression exchangeExpression)
     
    void
    setExchangeExpressionString(String exchangeExpression)
     
    void
     
    void
    setMessageConverter(org.springframework.amqp.support.converter.MessageConverter messageConverter)
     
    void
     
    void
    setQueueExpression(org.springframework.expression.Expression queueExpression)
     
    void
     
    void
    setReplyPayloadType(Class<?> replyPayloadType)
    Set the reply payload type.
    void
    setReplyPayloadType(org.springframework.core.ResolvableType replyPayloadType)
    Set the reply payload type.
    void
    setReplyPayloadTypeExpression(org.springframework.expression.Expression replyPayloadTypeExpression)
    Set a SpEL expression for the reply payload type.
    void
    setReplyPayloadTypeExpressionString(String replyPayloadTypeExpression)
    Set a SpEL expression for the reply payload type.
    void
    setReturnMessage(boolean returnMessage)
    Set to true to return the reply as a whole AMQP message.
    void
    setRoutingKey(String routingKey)
     
    void
    setRoutingKeyExpression(org.springframework.expression.Expression routingKeyExpression)
     
    void
    setRoutingKeyExpressionString(String routingKeyExpression)
     

    Methods inherited from class org.springframework.integration.handler.AbstractReplyProducingMessageHandler

    doInvokeAdvisedRequestHandler, getBeanClassLoader, getIntegrationPatternType, getRequiresReply, handleMessageInternal, hasAdviceChain, onInit, setAdviceChain, setBeanClassLoader, setRequiresReply

    Methods inherited from class org.springframework.integration.handler.AbstractMessageProducingHandler

    addNotPropagatedHeaders, createOutputMessage, getNotPropagatedHeaders, getOutputChannel, isAsync, messageBuilderForReply, produceOutput, resolveErrorChannel, sendErrorMessage, sendOutput, sendOutputs, setAsync, setNotPropagatedHeaders, setOutputChannel, setOutputChannelName, setSendTimeout, setupMessageProcessor, shouldCopyRequestHeaders, shouldSplitOutput, updateNotPropagatedHeaders

    Methods inherited from class org.springframework.integration.handler.AbstractMessageHandler

    handleMessage, onComplete, onError, onNext, onSubscribe, setObservationConvention

    Methods inherited from class org.springframework.integration.handler.MessageHandlerSupport

    buildSendTimer, destroy, getManagedName, getManagedType, getMetricsCaptor, getObservationRegistry, getOrder, getOverrides, isLoggingEnabled, isObserved, registerMetricsCaptor, registerObservationRegistry, sendTimer, setLoggingEnabled, setManagedName, setManagedType, setOrder, setShouldTrack, shouldTrack

    Methods inherited from class org.springframework.integration.context.IntegrationObjectSupport

    afterPropertiesSet, extractTypeIfPossible, generateId, getApplicationContext, getApplicationContextId, getBeanDescription, getBeanFactory, getBeanName, getChannelResolver, getComponentDescription, getComponentName, getComponentSource, getConversionService, getExpression, getIntegrationProperties, getMessageBuilderFactory, getTaskScheduler, isInitialized, setApplicationContext, setBeanFactory, setBeanName, setChannelResolver, setComponentDescription, setComponentName, setComponentSource, setConversionService, setMessageBuilderFactory, setPrimaryExpression, setTaskScheduler, toString

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    Methods inherited from interface reactor.core.CoreSubscriber

    currentContext

    Methods inherited from interface org.springframework.integration.support.management.IntegrationManagement

    getThisAs

    Methods inherited from interface org.springframework.integration.support.context.NamedComponent

    getBeanName, getComponentName
  • Constructor Details

    • AmqpClientMessageHandler

      public AmqpClientMessageHandler(org.springframework.amqp.core.AsyncAmqpTemplate amqpTemplate)
      Construct an instance with the provided AsyncAmqpTemplate. The AsyncAmqpTemplate must be an implementation for AMQP 1.0 protocol, e.g. RabbitAmqpTemplate.
      Parameters:
      amqpTemplate - the AsyncAmqpTemplate to use.
  • Method Details

    • setHeaderMapper

      public void setHeaderMapper(AmqpHeaderMapper headerMapper)
    • setMessageConverter

      public void setMessageConverter(org.springframework.amqp.support.converter.MessageConverter messageConverter)
    • setExchange

      public void setExchange(String exchange)
    • setExchangeExpressionString

      public void setExchangeExpressionString(String exchangeExpression)
    • setExchangeExpression

      public void setExchangeExpression(org.springframework.expression.Expression exchangeExpression)
    • setRoutingKey

      public void setRoutingKey(String routingKey)
    • setRoutingKeyExpressionString

      public void setRoutingKeyExpressionString(String routingKeyExpression)
    • setRoutingKeyExpression

      public void setRoutingKeyExpression(org.springframework.expression.Expression routingKeyExpression)
    • setQueue

      public void setQueue(String queue)
    • setQueueExpressionString

      public void setQueueExpressionString(String queueExpression)
    • setQueueExpression

      public void setQueueExpression(org.springframework.expression.Expression queueExpression)
    • setReplyPayloadType

      public void setReplyPayloadType(Class<?> replyPayloadType)
      Set the reply payload type. Used only if AbstractReplyProducingMessageHandler.setRequiresReply(boolean) is true.
      Parameters:
      replyPayloadType - the reply payload type.
    • setReplyPayloadType

      public void setReplyPayloadType(org.springframework.core.ResolvableType replyPayloadType)
      Set the reply payload type. Used only if AbstractReplyProducingMessageHandler.setRequiresReply(boolean) is true.
      Parameters:
      replyPayloadType - the reply payload type.
    • setReplyPayloadTypeExpressionString

      public void setReplyPayloadTypeExpressionString(String replyPayloadTypeExpression)
      Set a SpEL expression for the reply payload type. Used only if AbstractReplyProducingMessageHandler.setRequiresReply(boolean) is true. Must be evaluated to a Class or ResolvableType.
      Parameters:
      replyPayloadTypeExpression - the expression for a reply payload type.
    • setReplyPayloadTypeExpression

      public void setReplyPayloadTypeExpression(org.springframework.expression.Expression replyPayloadTypeExpression)
      Set a SpEL expression for the reply payload type. Used only if AbstractReplyProducingMessageHandler.setRequiresReply(boolean) is true. Must be evaluated to a Class or ResolvableType.
      Parameters:
      replyPayloadTypeExpression - the expression for a reply payload type.
    • setReturnMessage

      public void setReturnMessage(boolean returnMessage)
      Set to true to return the reply as a whole AMQP message. Used only in the gateway mode.
      Parameters:
      returnMessage - true to return the reply as a whole AMQP message.
    • getComponentType

      public String getComponentType()
      Specified by:
      getComponentType in interface org.springframework.integration.support.context.NamedComponent
      Overrides:
      getComponentType in class org.springframework.integration.handler.MessageHandlerSupport
    • doInit

      protected void doInit()
      Overrides:
      doInit in class org.springframework.integration.handler.AbstractReplyProducingMessageHandler
    • handleRequestMessage

      protected @Nullable Object handleRequestMessage(org.springframework.messaging.Message<?> requestMessage)
      Specified by:
      handleRequestMessage in class org.springframework.integration.handler.AbstractReplyProducingMessageHandler