Class ReplyManagerSupport

java.lang.Object
org.apache.camel.support.service.BaseService
org.apache.camel.support.service.ServiceSupport
org.apache.camel.component.rabbitmq.reply.ReplyManagerSupport
All Implemented Interfaces:
AutoCloseable, ReplyManager, org.apache.camel.Service, org.apache.camel.ShutdownableService, org.apache.camel.StatefulService, org.apache.camel.SuspendableService
Direct Known Subclasses:
TemporaryQueueReplyManager

public abstract class ReplyManagerSupport extends org.apache.camel.support.service.ServiceSupport implements ReplyManager
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected final org.apache.camel.CamelContext
     
    protected org.apache.camel.TimeoutMap<String,ReplyHandler>
     
     
     
    protected com.rabbitmq.client.Connection
     
    protected String
     
    protected final CountDownLatch
     
    protected final long
     

    Fields inherited from class org.apache.camel.support.service.BaseService

    BUILT, FAILED, INITIALIZED, INITIALIZING, lock, NEW, SHUTDOWN, SHUTTING_DOWN, STARTED, STARTING, status, STOPPED, STOPPING, SUSPENDED, SUSPENDING
  • Constructor Summary

    Constructors
    Constructor
    Description
    ReplyManagerSupport(org.apache.camel.CamelContext camelContext)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    cancelCorrelationId(String correlationId)
    Unregister a correlationId when you no longer need a reply
    protected abstract com.rabbitmq.client.Connection
     
    protected abstract ReplyHandler
    createReplyHandler(ReplyManager replyManager, org.apache.camel.Exchange exchange, org.apache.camel.AsyncCallback callback, String originalCorrelationId, String correlationId, long requestTimeout)
     
    protected void
     
    protected void
     
    Gets the reply to queue being used
    protected abstract void
    handleReplyMessage(String correlationID, com.rabbitmq.client.AMQP.BasicProperties properties, byte[] message)
     
    void
    onMessage(com.rabbitmq.client.AMQP.BasicProperties properties, byte[] message)
     
    void
    Process the reply
    registerReply(ReplyManager replyManager, org.apache.camel.Exchange exchange, org.apache.camel.AsyncCallback callback, String originalCorrelationId, String correlationId, long requestTimeout)
    Register a reply
    void
    Sets the belonging RabbitMQEndpoint
    void
    setReplyTo(String replyTo)
    Sets the reply to queue the manager should listen for replies.
    void
    Sets the scheduled to use when checking for timeouts (no reply received within a given time period)
    protected ReplyHandler
    waitForProvisionCorrelationToBeUpdated(String correlationID, byte[] message)
    IMPORTANT: This logic is only being used due to high performance in-memory only testing using InOut over JMS.

    Methods inherited from class org.apache.camel.support.service.BaseService

    build, doBuild, doFail, doInit, doLifecycleChange, doResume, doShutdown, doSuspend, fail, getStatus, init, isBuild, isInit, isNew, isRunAllowed, isShutdown, isStarted, isStarting, isStartingOrStarted, isStopped, isStopping, isStoppingOrStopped, isSuspended, isSuspending, isSuspendingOrSuspended, resume, shutdown, start, stop, suspend

    Methods inherited from class java.lang.Object

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

    Methods inherited from interface org.apache.camel.component.rabbitmq.reply.ReplyManager

    updateCorrelationId

    Methods inherited from interface org.apache.camel.Service

    build, close, init, start, stop

    Methods inherited from interface org.apache.camel.ShutdownableService

    shutdown

    Methods inherited from interface org.apache.camel.StatefulService

    getStatus, isRunAllowed, isStarted, isStarting, isStopped, isStopping, isSuspending

    Methods inherited from interface org.apache.camel.SuspendableService

    isSuspended, resume, suspend
  • Field Details

    • camelContext

      protected final org.apache.camel.CamelContext camelContext
    • replyToLatch

      protected final CountDownLatch replyToLatch
    • replyToTimeout

      protected final long replyToTimeout
      See Also:
    • executorService

      protected ScheduledExecutorService executorService
    • endpoint

      protected RabbitMQEndpoint endpoint
    • replyTo

      protected String replyTo
    • listenerContainer

      protected com.rabbitmq.client.Connection listenerContainer
    • correlation

      protected org.apache.camel.TimeoutMap<String,ReplyHandler> correlation
  • Constructor Details

    • ReplyManagerSupport

      public ReplyManagerSupport(org.apache.camel.CamelContext camelContext)
  • Method Details

    • setScheduledExecutorService

      public void setScheduledExecutorService(ScheduledExecutorService executorService)
      Description copied from interface: ReplyManager
      Sets the scheduled to use when checking for timeouts (no reply received within a given time period)
      Specified by:
      setScheduledExecutorService in interface ReplyManager
    • setEndpoint

      public void setEndpoint(RabbitMQEndpoint endpoint)
      Description copied from interface: ReplyManager
      Sets the belonging RabbitMQEndpoint
      Specified by:
      setEndpoint in interface ReplyManager
    • setReplyTo

      public void setReplyTo(String replyTo)
      Description copied from interface: ReplyManager
      Sets the reply to queue the manager should listen for replies.

      The queue is either a temporary or a persistent queue.

      Specified by:
      setReplyTo in interface ReplyManager
    • getReplyTo

      public String getReplyTo()
      Description copied from interface: ReplyManager
      Gets the reply to queue being used
      Specified by:
      getReplyTo in interface ReplyManager
    • registerReply

      public String registerReply(ReplyManager replyManager, org.apache.camel.Exchange exchange, org.apache.camel.AsyncCallback callback, String originalCorrelationId, String correlationId, long requestTimeout)
      Description copied from interface: ReplyManager
      Register a reply
      Specified by:
      registerReply in interface ReplyManager
      Parameters:
      replyManager - the reply manager being used
      exchange - the exchange
      callback - the callback
      originalCorrelationId - an optional original correlation id
      correlationId - the correlation id to expect being used
      requestTimeout - the timeout
      Returns:
      the correlation id used
    • createReplyHandler

      protected abstract ReplyHandler createReplyHandler(ReplyManager replyManager, org.apache.camel.Exchange exchange, org.apache.camel.AsyncCallback callback, String originalCorrelationId, String correlationId, long requestTimeout)
    • cancelCorrelationId

      public void cancelCorrelationId(String correlationId)
      Description copied from interface: ReplyManager
      Unregister a correlationId when you no longer need a reply
      Specified by:
      cancelCorrelationId in interface ReplyManager
    • onMessage

      public void onMessage(com.rabbitmq.client.AMQP.BasicProperties properties, byte[] message)
    • processReply

      public void processReply(ReplyHolder holder)
      Description copied from interface: ReplyManager
      Process the reply
      Specified by:
      processReply in interface ReplyManager
      Parameters:
      holder - containing needed data to process the reply and continue routing
    • handleReplyMessage

      protected abstract void handleReplyMessage(String correlationID, com.rabbitmq.client.AMQP.BasicProperties properties, byte[] message)
    • createListenerContainer

      protected abstract com.rabbitmq.client.Connection createListenerContainer() throws Exception
      Throws:
      Exception
    • waitForProvisionCorrelationToBeUpdated

      protected ReplyHandler waitForProvisionCorrelationToBeUpdated(String correlationID, byte[] message)
      IMPORTANT: This logic is only being used due to high performance in-memory only testing using InOut over JMS. Its unlikely to happen in a real life situation with communication to a remote broker, which always will be slower to send back reply, before Camel had a chance to update it's internal correlation map.
    • doStart

      protected void doStart() throws Exception
      Overrides:
      doStart in class org.apache.camel.support.service.BaseService
      Throws:
      Exception
    • doStop

      protected void doStop() throws Exception
      Overrides:
      doStop in class org.apache.camel.support.service.BaseService
      Throws:
      Exception