Class CamelMessageHandler

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.camel.outbound.CamelMessageHandler
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.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 CamelMessageHandler extends org.springframework.integration.handler.AbstractReplyProducingMessageHandler
A MessageHandler for calling Apache Camel route and produce (optionally) a reply.

In the async mode, the ProducerTemplate.asyncSend(Endpoint, Exchange) is used.

The request-reply behavior can be controlled via ExchangePattern configuration or per message. By default, this handler works in an ExchangePattern.InOnly mode.

A default "mapping all headers" between Spring Integration and Apache Camel messages behavior can be customized via setHeaderMapper(HeaderMapper) option.

The target Apache Camel endpoint to call can be determined by the endpointUriExpression. By default, a ProducerTemplate.getDefaultEndpoint() is used.

Since:
6.0
See Also:
  • 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
    CamelMessageHandler(org.apache.camel.ProducerTemplate producerTemplate)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected final void
     
    protected Object
    handleRequestMessage(org.springframework.messaging.Message<?> requestMessage)
     
    void
    setEndpointUri(String endpointUri)
     
    void
    setEndpointUriExpression(org.springframework.expression.Expression endpointUriExpression)
     
    void
    setExchangePattern(org.apache.camel.ExchangePattern exchangePattern)
     
    void
    setExchangePatternExpression(org.springframework.expression.Expression exchangePatternExpression)
     
    void
    setExchangeProperties(Map<String,Object> exchangeProperties)
     
    void
    setExchangePropertiesExpression(org.springframework.expression.Expression exchangePropertiesExpression)
    Set a SpEL expression to evaluate Exchange properties as a Map.
    void
    setHeaderMapper(org.springframework.integration.mapping.HeaderMapper<org.apache.camel.Message> headerMapper)
    Set a HeaderMapper to map request message headers into Apache Camel message headers and back if request-reply exchange pattern is used.

    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, 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, getComponentType, getManagedName, getManagedType, getMetricsCaptor, getObservationRegistry, getOrder, getOverrides, isLoggingEnabled, 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, getComponentName, getConversionService, getExpression, getIntegrationProperties, getIntegrationProperty, getMessageBuilderFactory, getTaskScheduler, isInitialized, setApplicationContext, setBeanFactory, setBeanName, setChannelResolver, setComponentName, setConversionService, setMessageBuilderFactory, setPrimaryExpression, setTaskScheduler, toString

    Methods inherited from class java.lang.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

    • CamelMessageHandler

      public CamelMessageHandler(org.apache.camel.ProducerTemplate producerTemplate)
  • Method Details

    • setEndpointUri

      public void setEndpointUri(String endpointUri)
    • setEndpointUriExpression

      public void setEndpointUriExpression(org.springframework.expression.Expression endpointUriExpression)
    • setExchangePattern

      public void setExchangePattern(org.apache.camel.ExchangePattern exchangePattern)
    • setExchangePatternExpression

      public void setExchangePatternExpression(org.springframework.expression.Expression exchangePatternExpression)
    • setHeaderMapper

      public void setHeaderMapper(org.springframework.integration.mapping.HeaderMapper<org.apache.camel.Message> headerMapper)
      Set a HeaderMapper to map request message headers into Apache Camel message headers and back if request-reply exchange pattern is used.
      Parameters:
      headerMapper - the HeaderMapper to use.
    • setExchangeProperties

      public void setExchangeProperties(Map<String,Object> exchangeProperties)
    • setExchangePropertiesExpression

      public void setExchangePropertiesExpression(org.springframework.expression.Expression exchangePropertiesExpression)
      Set a SpEL expression to evaluate Exchange properties as a Map.
      Parameters:
      exchangePropertiesExpression - the expression for exchange properties.
    • doInit

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

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