Class AMQPFederationSenderController
java.lang.Object
org.apache.activemq.artemis.protocol.amqp.connect.federation.AMQPFederationSenderController
- All Implemented Interfaces:
SenderController
- Direct Known Subclasses:
AMQPFederationAddressSenderController, AMQPFederationQueueSenderController
A base class abstract
SenderController implementation for use by federation address and queue senders that
provides some common functionality used between both.-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from interface SenderController
SenderController.RejectingOutgoingMessageWriter -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final Consumer<AMQPFederationSenderController> protected final Stringprotected MessageWriterprotected MessageWriterprotected final AMQPFederationprotected MessageWriterprotected final AMQPFederationRemotePolicyManagerprotected final AMQPFederationMetrics.ProducerMetricsprotected Consumer<org.apache.qpid.proton.amqp.transport.ErrorCondition> protected ProtonServerSenderContextprotected org.apache.activemq.artemis.core.server.ServerConsumerprotected final AMQPSessionContextprotected final AMQPSessionCallbackprotected MessageWriterprotected booleanFields inherited from interface SenderController
REJECTING_MESSAGE_WRITER -
Constructor Summary
ConstructorsConstructorDescriptionAMQPFederationSenderController(AMQPFederationRemotePolicyManager manager, AMQPFederationMetrics.ProducerMetrics metrics, Consumer<AMQPFederationSenderController> closedListener) -
Method Summary
Modifier and TypeMethodDescriptionfinal voidclose(boolean remoteClose) Handle close of the sever sender AMQP resources either from remote link detach or local close usually due to connection drop.final voidclose(org.apache.qpid.proton.amqp.transport.ErrorCondition error) Called when the sender is being locally closed due to some error or forced shutdown due to resource deletion etc.protected abstract org.apache.activemq.artemis.core.server.ServerConsumercreateServerConsumer(ProtonServerSenderContext senderContext) The subclass must implement this and create an appropriately configured server consumer based on the properties of the AMQP link and the role of the implemented sender type.final AMQPFederationfinal longabstract AMQPFederationSenderController.RolegetRole()Returns an enumeration describing the role of the sender controller implementation.protected static RoutingTypegetRoutingType(org.apache.qpid.proton.amqp.messaging.Source source) final org.apache.activemq.artemis.core.server.ActiveMQServerfinal org.apache.activemq.artemis.core.server.ServerConsumerfinal AMQPSessionCallbackfinal AMQPSessionContextprotected voidhandleLinkLocallyClosed(org.apache.qpid.proton.amqp.transport.ErrorCondition error) Subclasses should react to link local close by cleaning up resources.protected voidSubclasses should react to link remote close by cleaning up any resourcesfinal org.apache.activemq.artemis.core.server.ServerConsumerinit(ProtonServerSenderContext senderContext) Initialize sender controller state and handle open of AMQP sender resourcesprotected final voidregisterRemoteLinkClosedInterceptor(org.apache.qpid.proton.engine.Sender protonSender) final MessageWriterselectOutgoingMessageWriter(ProtonServerSenderContext sender, org.apache.activemq.artemis.core.server.MessageReference reference) Controller selects a outgoing delivery writer that will handle the encoding and writing of the targetMessagecarried in the givenMessageReference.
-
Field Details
-
manager
-
session
-
sessionSPI
-
federation
-
metrics
-
controllerId
-
standardMessageWriter
-
largeMessageWriter
-
coreMessageWriter
-
coreLargeMessageWriter
-
senderContext
-
serverConsumer
protected org.apache.activemq.artemis.core.server.ServerConsumer serverConsumer -
tunnelCoreMessages
protected boolean tunnelCoreMessages -
resourceDeletedAction
-
closedListener
-
-
Constructor Details
-
AMQPFederationSenderController
public AMQPFederationSenderController(AMQPFederationRemotePolicyManager manager, AMQPFederationMetrics.ProducerMetrics metrics, Consumer<AMQPFederationSenderController> closedListener) throws ActiveMQAMQPException - Throws:
ActiveMQAMQPException
-
-
Method Details
-
getRole
Returns an enumeration describing the role of the sender controller implementation.- Returns:
- an enumeration describing the role of the sender controller implementation
-
getMessagesSent
public final long getMessagesSent() -
getServer
public final org.apache.activemq.artemis.core.server.ActiveMQServer getServer() -
getSenderContext
-
getServerConsumer
public final org.apache.activemq.artemis.core.server.ServerConsumer getServerConsumer() -
getSessionContext
-
getSessionCallback
-
getFederation
-
getPolicyManager
-
init
public final org.apache.activemq.artemis.core.server.ServerConsumer init(ProtonServerSenderContext senderContext) throws Exception Description copied from interface:SenderControllerInitialize sender controller state and handle open of AMQP sender resources- Specified by:
initin interfaceSenderController- Parameters:
senderContext- The sender context that is requesting controller initialization.- Returns:
- a server consumer that has been initialize by the controller
- Throws:
Exception- if an error occurs during initialization.
-
createServerConsumer
protected abstract org.apache.activemq.artemis.core.server.ServerConsumer createServerConsumer(ProtonServerSenderContext senderContext) throws Exception The subclass must implement this and create an appropriately configured server consumer based on the properties of the AMQP link and the role of the implemented sender type.- Parameters:
senderContext- The server sender context that this controller was created for.- Returns:
- a new
ServerConsumerinstance that will send messages to the remote peer - Throws:
Exception- if an error occurs while creating the server consumer.
-
close
Description copied from interface:SenderControllerHandle close of the sever sender AMQP resources either from remote link detach or local close usually due to connection drop.- Specified by:
closein interfaceSenderController- Parameters:
remoteClose- Indicates if the remote link detached the sender or local action closed it.- Throws:
Exception- if an error occurs during close.
-
handleLinkRemotelyClosed
protected void handleLinkRemotelyClosed()Subclasses should react to link remote close by cleaning up any resources -
close
public final void close(org.apache.qpid.proton.amqp.transport.ErrorCondition error) Description copied from interface:SenderControllerCalled when the sender is being locally closed due to some error or forced shutdown due to resource deletion etc. The default implementation of this API does nothing in response to this call.- Specified by:
closein interfaceSenderController- Parameters:
error- The error condition that triggered the close.
-
handleLinkLocallyClosed
protected void handleLinkLocallyClosed(org.apache.qpid.proton.amqp.transport.ErrorCondition error) Subclasses should react to link local close by cleaning up resources.- Parameters:
error- The error that triggered the local close or null if no error.
-
selectOutgoingMessageWriter
public final MessageWriter selectOutgoingMessageWriter(ProtonServerSenderContext sender, org.apache.activemq.artemis.core.server.MessageReference reference) Description copied from interface:SenderControllerController selects a outgoing delivery writer that will handle the encoding and writing of the targetMessagecarried in the givenMessageReference. The selection process should take into account how the message pre-processing will mutate the outgoing message.The default implementation performs no caching of writers and should be overridden in subclasses to reduce GC churn, the default version is suitable for tests.
- Specified by:
selectOutgoingMessageWriterin interfaceSenderController- Parameters:
sender- The server sender that will make use of the returned delivery context.reference- The message that must be sent using an outgoing context- Returns:
- an
MessageWriterto use when sending the message in the reference
-
registerRemoteLinkClosedInterceptor
protected final void registerRemoteLinkClosedInterceptor(org.apache.qpid.proton.engine.Sender protonSender) -
getRoutingType
-