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
FieldsModifier and TypeFieldDescriptionprotected final org.apache.camel.CamelContext
protected org.apache.camel.TimeoutMap<String,
ReplyHandler> protected RabbitMQEndpoint
protected ScheduledExecutorService
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 -
Method Summary
Modifier and TypeMethodDescriptionvoid
cancelCorrelationId
(String correlationId) Unregister a correlationId when you no longer need a replyprotected 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
doStart()
protected void
doStop()
Gets the reply to queue being usedprotected abstract void
handleReplyMessage
(String correlationID, com.rabbitmq.client.AMQP.BasicProperties properties, byte[] message) void
onMessage
(com.rabbitmq.client.AMQP.BasicProperties properties, byte[] message) void
processReply
(ReplyHolder holder) Process the replyregisterReply
(ReplyManager replyManager, org.apache.camel.Exchange exchange, org.apache.camel.AsyncCallback callback, String originalCorrelationId, String correlationId, long requestTimeout) Register a replyvoid
setEndpoint
(RabbitMQEndpoint endpoint) Sets the belongingRabbitMQEndpoint
void
setReplyTo
(String replyTo) Sets the reply to queue the manager should listen for replies.void
setScheduledExecutorService
(ScheduledExecutorService executorService) 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
-
replyToTimeout
protected final long replyToTimeout- See Also:
-
executorService
-
endpoint
-
replyTo
-
listenerContainer
protected com.rabbitmq.client.Connection listenerContainer -
correlation
-
-
Constructor Details
-
ReplyManagerSupport
public ReplyManagerSupport(org.apache.camel.CamelContext camelContext)
-
-
Method Details
-
setScheduledExecutorService
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 interfaceReplyManager
-
setEndpoint
Description copied from interface:ReplyManager
Sets the belongingRabbitMQEndpoint
- Specified by:
setEndpoint
in interfaceReplyManager
-
setReplyTo
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 interfaceReplyManager
-
getReplyTo
Description copied from interface:ReplyManager
Gets the reply to queue being used- Specified by:
getReplyTo
in interfaceReplyManager
-
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 interfaceReplyManager
- Parameters:
replyManager
- the reply manager being usedexchange
- the exchangecallback
- the callbackoriginalCorrelationId
- an optional original correlation idcorrelationId
- the correlation id to expect being usedrequestTimeout
- 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
Description copied from interface:ReplyManager
Unregister a correlationId when you no longer need a reply- Specified by:
cancelCorrelationId
in interfaceReplyManager
-
onMessage
public void onMessage(com.rabbitmq.client.AMQP.BasicProperties properties, byte[] message) -
processReply
Description copied from interface:ReplyManager
Process the reply- Specified by:
processReply
in interfaceReplyManager
- 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
- Throws:
Exception
-
waitForProvisionCorrelationToBeUpdated
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
- Overrides:
doStart
in classorg.apache.camel.support.service.BaseService
- Throws:
Exception
-
doStop
- Overrides:
doStop
in classorg.apache.camel.support.service.BaseService
- Throws:
Exception
-