Class 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 Detail

      • camelContext

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

        protected String replyTo
      • listenerContainer

        protected com.rabbitmq.client.Connection listenerContainer
    • Constructor Detail

      • ReplyManagerSupport

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

      • 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
      • 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