Class AbstractAmqpOutboundEndpoint
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.amqp.outbound.AbstractAmqpOutboundEndpoint
- All Implemented Interfaces:
org.reactivestreams.Subscriber<Message<?>>,Aware,BeanClassLoaderAware,BeanFactoryAware,BeanNameAware,DisposableBean,InitializingBean,ApplicationContextAware,Lifecycle,Ordered,ExpressionCapable,Orderable,MessageProducer,HeaderPropagationAware,IntegrationPattern,NamedComponent,IntegrationManagement,ManageableLifecycle,TrackableComponent,MessageHandler,reactor.core.CoreSubscriber<Message<?>>
- Direct Known Subclasses:
AmqpOutboundEndpoint,AsyncAmqpOutboundGateway
public abstract class AbstractAmqpOutboundEndpoint extends AbstractReplyProducingMessageHandler implements ManageableLifecycle
A base
AbstractReplyProducingMessageHandler extension for AMQP message handlers.- Since:
- 4.3
- Author:
- Gary Russell, Artem Bilan
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classAbstractAmqpOutboundEndpoint.CorrelationDataWrapperNested classes/interfaces inherited from class org.springframework.integration.handler.AbstractReplyProducingMessageHandler
AbstractReplyProducingMessageHandler.RequestHandlerNested classes/interfaces inherited from interface org.springframework.integration.support.management.IntegrationManagement
IntegrationManagement.ManagementOverrides -
Field Summary
Fields inherited from class org.springframework.integration.handler.AbstractMessageProducingHandler
messagingTemplateFields inherited from class org.springframework.integration.context.IntegrationObjectSupport
EXPRESSION_PARSER, loggerFields inherited from interface org.springframework.integration.support.management.IntegrationManagement
METER_PREFIX, RECEIVE_COUNTER_NAME, SEND_TIMER_NAMEFields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE -
Constructor Summary
Constructors Constructor Description AbstractAmqpOutboundEndpoint() -
Method Summary
Modifier and Type Method Description protected voidaddDelayProperty(Message<?> message, Message amqpMessage)protected AbstractIntegrationMessageBuilder<?>buildReply(MessageConverter converter, Message amqpReplyMessage)protected Message<?>buildReturnedMessage(Message message, int replyCode, String replyText, String exchange, String returnedRoutingKey, MessageConverter converter)Deprecated.since 5.4 in favor ofbuildReturnedMessage(ReturnedMessage, MessageConverter)protected Message<?>buildReturnedMessage(ReturnedMessage returnedMessage, MessageConverter converter)protected voiddoInit()protected voiddoStart()protected voiddoStop()protected voidendpointInit()Subclasses can override to perform any additional initialization.protected CorrelationDatagenerateCorrelationData(Message<?> requestMessage)protected StringgenerateExchangeName(Message<?> requestMessage)protected StringgenerateRoutingKey(Message<?> requestMessage)protected MessageChannelgetConfirmAckChannel()protected ExpressiongetConfirmCorrelationExpression()protected MessageChannelgetConfirmNackChannel()protected DurationgetConfirmTimeout()protected ExpressionEvaluatingMessageProcessor<Object>getCorrelationDataGenerator()protected MessageDeliveryModegetDefaultDeliveryMode()protected StringgetExchangeName()protected ExpressiongetExchangeNameExpression()protected ExpressionEvaluatingMessageProcessor<String>getExchangeNameGenerator()AmqpHeaderMappergetHeaderMapper()protected abstract RabbitTemplategetRabbitTemplate()protected MessageChannelgetReturnChannel()protected StringgetRoutingKey()protected ExpressiongetRoutingKeyExpression()protected ExpressionEvaluatingMessageProcessor<String>getRoutingKeyGenerator()protected voidhandleConfirm(CorrelationData correlationData, boolean ack, String cause)protected booleanisHeadersMappedLast()protected booleanisLazyConnect()booleanisRunning()voidsetConfirmAckChannel(MessageChannel ackChannel)Set the channel to which acks are send (publisher confirms).voidsetConfirmAckChannelName(String ackChannelName)Set the channel name to which acks are send (publisher confirms).voidsetConfirmCorrelationExpression(Expression confirmCorrelationExpression)Set a SpEL expression to evaluate confirm correlation at runtime.voidsetConfirmCorrelationExpressionString(String confirmCorrelationExpression)Set a SpEL expression to evaluate confirm correlation at runtime.voidsetConfirmNackChannel(MessageChannel nackChannel)Set the channel to which nacks are send (publisher confirms).voidsetConfirmNackChannelName(String nackChannelName)Set the channel name to which nacks are send (publisher confirms).voidsetConfirmTimeout(long confirmTimeout)Set a timeout after which a nack will be synthesized if no publisher confirm has been received within that time.protected voidsetConnectionFactory(ConnectionFactory connectionFactory)voidsetDefaultDeliveryMode(MessageDeliveryMode defaultDeliveryMode)Set the default delivery mode.voidsetDelay(int delay)Set the value to set in thex-delayheader when using the RabbitMQ delayed message exchange plugin.voidsetDelayExpression(Expression delayExpression)Set the SpEL expression to calculate thex-delayheader when using the RabbitMQ delayed message exchange plugin.voidsetDelayExpressionString(String delayExpression)Set the SpEL expression to calculate thex-delayheader when using the RabbitMQ delayed message exchange plugin.voidsetErrorMessageStrategy(ErrorMessageStrategy errorMessageStrategy)Set the error message strategy to use for returned (or negatively confirmed) messages.voidsetExchangeName(String exchangeName)Configure an AMQP exchange name for sending messages.voidsetExchangeNameExpression(Expression exchangeNameExpression)Configure a SpEL expression to evaluate an exchange name at runtime.voidsetExchangeNameExpressionString(String exchangeNameExpression)voidsetHeaderMapper(AmqpHeaderMapper headerMapper)Set a customAmqpHeaderMapperfor mapping request and reply headers.voidsetHeadersMappedLast(boolean headersMappedLast)When mapping headers for the outbound message, determine whether the headers are mapped before the message is converted, or afterwards.voidsetLazyConnect(boolean lazyConnect)Set tofalseto attempt to connect during endpoint start; defaulttrue, meaning the connection will be attempted to be established on the arrival of the first message.voidsetReturnChannel(MessageChannel returnChannel)Set the channel to which returned messages are sent.voidsetRoutingKey(String routingKey)Configure an AMQP routing key for sending messages.voidsetRoutingKeyExpression(Expression routingKeyExpression)voidsetRoutingKeyExpressionString(String routingKeyExpression)voidstart()voidstop()Methods inherited from class org.springframework.integration.handler.AbstractReplyProducingMessageHandler
doInvokeAdvisedRequestHandler, getBeanClassLoader, getIntegrationPatternType, getRequiresReply, handleMessageInternal, handleRequestMessage, hasAdviceChain, onInit, setAdviceChain, setBeanClassLoader, setRequiresReplyMethods 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, updateNotPropagatedHeadersMethods inherited from class org.springframework.integration.handler.AbstractMessageHandler
handleMessage, onComplete, onError, onNext, onSubscribeMethods inherited from class org.springframework.integration.handler.MessageHandlerSupport
buildSendTimer, destroy, getComponentType, getManagedName, getManagedType, getMetricsCaptor, getOrder, getOverrides, isLoggingEnabled, registerMetricsCaptor, sendTimer, setLoggingEnabled, setManagedName, setManagedType, setOrder, setShouldTrack, shouldTrackMethods 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, toStringMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.springframework.integration.support.management.IntegrationManagement
getThisAsMethods inherited from interface org.springframework.integration.support.context.NamedComponent
getBeanName, getComponentName
-
Constructor Details
-
AbstractAmqpOutboundEndpoint
public AbstractAmqpOutboundEndpoint()
-
-
Method Details
-
setHeaderMapper
Set a customAmqpHeaderMapperfor mapping request and reply headers. Defaults toDefaultAmqpHeaderMapper.outboundMapper().- Parameters:
headerMapper- theAmqpHeaderMapperto use.
-
setHeadersMappedLast
public void setHeadersMappedLast(boolean headersMappedLast)When mapping headers for the outbound message, determine whether the headers are mapped before the message is converted, or afterwards. This only affects headers that might be added by the message converter. When false, the converter's headers win; when true, any headers added by the converter will be overridden (if the source message has a header that maps to those headers). You might wish to set this to true, for example, when using aSimpleMessageConverterwith a String payload that contains json; the converter will set the content type totext/plainwhich can be overridden toapplication/jsonby setting theAmqpHeaders.CONTENT_TYPEmessage header. Default: false.- Parameters:
headersMappedLast- true if headers are mapped after conversion.- Since:
- 5.0
-
setExchangeName
Configure an AMQP exchange name for sending messages.- Parameters:
exchangeName- the exchange name for sending messages.
-
setExchangeNameExpression
Configure a SpEL expression to evaluate an exchange name at runtime.- Parameters:
exchangeNameExpression- the expression to use.- Since:
- 4.3
-
setExchangeNameExpressionString
- Parameters:
exchangeNameExpression- the String in SpEL syntax.- Since:
- 4.3
-
setRoutingKey
Configure an AMQP routing key for sending messages.- Parameters:
routingKey- the routing key to use
-
setRoutingKeyExpression
- Parameters:
routingKeyExpression- the expression to use.- Since:
- 4.3
-
setRoutingKeyExpressionString
- Parameters:
routingKeyExpression- the String in SpEL syntax.- Since:
- 4.3
-
setConfirmCorrelationExpression
Set a SpEL expression to evaluate confirm correlation at runtime.- Parameters:
confirmCorrelationExpression- the expression to use.- Since:
- 4.3
-
setConfirmCorrelationExpressionString
Set a SpEL expression to evaluate confirm correlation at runtime.- Parameters:
confirmCorrelationExpression- the String in SpEL syntax.- Since:
- 4.3
-
setConfirmAckChannel
Set the channel to which acks are send (publisher confirms).- Parameters:
ackChannel- the channel.
-
setConfirmAckChannelName
Set the channel name to which acks are send (publisher confirms).- Parameters:
ackChannelName- the channel name.- Since:
- 4.3.12
-
setConfirmNackChannel
Set the channel to which nacks are send (publisher confirms).- Parameters:
nackChannel- the channel.
-
setConfirmNackChannelName
Set the channel name to which nacks are send (publisher confirms).- Parameters:
nackChannelName- the channel name.- Since:
- 4.3.12
-
setReturnChannel
Set the channel to which returned messages are sent.- Parameters:
returnChannel- the channel.
-
setDefaultDeliveryMode
Set the default delivery mode.- Parameters:
defaultDeliveryMode- the delivery mode.
-
setLazyConnect
public void setLazyConnect(boolean lazyConnect)Set tofalseto attempt to connect during endpoint start; defaulttrue, meaning the connection will be attempted to be established on the arrival of the first message.- Parameters:
lazyConnect- the lazyConnect to set- Since:
- 4.1
-
setDelay
public void setDelay(int delay)Set the value to set in thex-delayheader when using the RabbitMQ delayed message exchange plugin. By default, theAmqpHeaders.DELAYheader (if present) is mapped; setting the delay here overrides that value.- Parameters:
delay- the delay.- Since:
- 4.3.5
-
setDelayExpression
Set the SpEL expression to calculate thex-delayheader when using the RabbitMQ delayed message exchange plugin. By default, theAmqpHeaders.DELAYheader (if present) is mapped; setting the expression here overrides that value.- Parameters:
delayExpression- the expression.- Since:
- 4.3.5
-
setDelayExpressionString
Set the SpEL expression to calculate thex-delayheader when using the RabbitMQ delayed message exchange plugin. By default, theAmqpHeaders.DELAYheader (if present) is mapped; setting the expression here overrides that value.- Parameters:
delayExpression- the expression.- Since:
- 4.3.5
-
setErrorMessageStrategy
Set the error message strategy to use for returned (or negatively confirmed) messages.- Parameters:
errorMessageStrategy- the strategy.- Since:
- 4.3.12
-
setConfirmTimeout
public void setConfirmTimeout(long confirmTimeout)Set a timeout after which a nack will be synthesized if no publisher confirm has been received within that time. Missing confirms will be checked every 50% of this value so the synthesized nack will be sent between 1x and 1.5x this timeout.- Parameters:
confirmTimeout- the approximate timeout.- Since:
- 5.2
- See Also:
setConfirmNackChannel(MessageChannel)
-
setConnectionFactory
-
getExchangeName
-
getRoutingKey
-
getExchangeNameExpression
-
getRoutingKeyExpression
-
getRoutingKeyGenerator
-
getExchangeNameGenerator
-
getHeaderMapper
-
getConfirmCorrelationExpression
-
getCorrelationDataGenerator
-
getConfirmAckChannel
-
getConfirmNackChannel
-
getReturnChannel
-
getDefaultDeliveryMode
-
isLazyConnect
protected boolean isLazyConnect() -
isHeadersMappedLast
protected boolean isHeadersMappedLast() -
getConfirmTimeout
-
doInit
protected final void doInit()- Overrides:
doInitin classAbstractReplyProducingMessageHandler
-
endpointInit
protected void endpointInit()Subclasses can override to perform any additional initialization. Called from afterPropertiesSet(). -
start
public void start()- Specified by:
startin interfaceLifecycle- Specified by:
startin interfaceManageableLifecycle
-
getRabbitTemplate
-
stop
public void stop()- Specified by:
stopin interfaceLifecycle- Specified by:
stopin interfaceManageableLifecycle
-
doStart
protected void doStart() -
doStop
protected void doStop() -
isRunning
public boolean isRunning()- Specified by:
isRunningin interfaceLifecycle- Specified by:
isRunningin interfaceManageableLifecycle
-
generateCorrelationData
-
generateExchangeName
-
generateRoutingKey
-
addDelayProperty
-
buildReply
protected AbstractIntegrationMessageBuilder<?> buildReply(MessageConverter converter, Message amqpReplyMessage) -
buildReturnedMessage
@Deprecated protected Message<?> buildReturnedMessage(Message message, int replyCode, String replyText, String exchange, String returnedRoutingKey, MessageConverter converter)Deprecated.since 5.4 in favor ofbuildReturnedMessage(ReturnedMessage, MessageConverter)Build Spring message object based on the provided returned AMQP message info.- Parameters:
message- the returned AMQP messagereplyCode- the returned message reason codereplyText- the returned message reason textexchange- the exchange the message returned fromreturnedRoutingKey- the routing key for returned messageconverter- the converter to deserialize body of the returned AMQP message- Returns:
- the Spring message which represents a returned AMQP message
-
buildReturnedMessage
protected Message<?> buildReturnedMessage(ReturnedMessage returnedMessage, MessageConverter converter) -
handleConfirm
-