クラス AbstractCorrelatingMessageHandler
java.lang.ObjectSE
org.springframework.integration.context.IntegrationObjectSupport
org.springframework.integration.handler.MessageHandlerSupport
org.springframework.integration.handler.AbstractMessageHandler
org.springframework.integration.handler.AbstractMessageProducingHandler
org.springframework.integration.aggregator.AbstractCorrelatingMessageHandler
- 実装されたすべてのインターフェース:
org.reactivestreams.Subscriber<Message<?>>
、Aware
、BeanFactoryAware
、BeanNameAware
、DisposableBean
、InitializingBean
、ApplicationContextAware
、ApplicationEventPublisherAware
、Lifecycle
、Ordered
、ExpressionCapable
、Orderable
、MessageProducer
、DiscardingMessageHandler
、HeaderPropagationAware
、IntegrationPattern
、NamedComponent
、IntegrationManagement
、ManageableLifecycle
、TrackableComponent
、MessageHandler
、reactor.core.CoreSubscriber<Message<?>>
- 既知の直属サブクラス
AggregatingMessageHandler
,ResequencingMessageHandler
public abstract class AbstractCorrelatingMessageHandler
extends AbstractMessageProducingHandler
implements DiscardingMessageHandler, ApplicationEventPublisherAware, ManageableLifecycle
MessageStore
内の相関メッセージのバッファを保持する抽象メッセージハンドラー。このクラスは、バッチで完了することができるメッセージの相関グループを処理します。これは、相関を必要とする MessageHandlers のカスタム実装に役立ち、Aggregator-AggregatingMessageHandler
および Resequencer-ResequencingMessageHandler
の基本クラスとして、または相関を必要とするカスタム実装に使用されます。 このハンドラーをカスタマイズするには、必要に応じて CorrelationStrategy
、ReleaseStrategy
、MessageGroupProcessor
実装を挿入します。
デフォルトでは、CorrelationStrategy
は HeaderAttributeCorrelationStrategy
になり、ReleaseStrategy
は SequenceSizeReleaseStrategy
になります。
複数のハンドラーで同じ MessageStore
が使用されている場合は、適切な CorrelationStrategy
を使用して、ハンドラー全体でメッセージグループの一意性を確保します。
expireTimeout
が 0 より大きい場合、このタイムアウトより古いグループは、起動時(または purgeOrphanedGroups()
が呼び出されたとき)にストアからパージされます。expireDuration
が提供されている場合、タスクは purgeOrphanedGroups()
を定期的に実行するようにスケジュールされます。
- 導入:
- 2.0
- 作成者:
- Iwein Fuld, Dave Syer, Oleg Zhurakousky, Gary Russell, Artem Bilan, David Liu, Enrique Rodriguez, Meherzad Lahewala, Jayadev Sirimamilla
ネストされたクラスのサマリー
ネストされたクラスインターフェース org.springframework.integration.support.management.IntegrationManagement から継承されたネストクラス / インターフェース
IntegrationManagement.ManagementOverrides
フィールドサマリー
クラス org.springframework.integration.handler.AbstractMessageProducingHandler から継承されたフィールド
messagingTemplate
クラス org.springframework.integration.context.IntegrationObjectSupport から継承されたフィールド
EXPRESSION_PARSER, logger
インターフェース org.springframework.integration.support.management.IntegrationManagement から継承されたフィールド
METER_PREFIX, RECEIVE_COUNTER_NAME, SEND_TIMER_NAME
インターフェース org.springframework.core.Ordered から継承されたフィールド
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
コンストラクターのサマリー
コンストラクターコンストラクター説明AbstractCorrelatingMessageHandler
(MessageGroupProcessor processor, MessageGroupStore store) AbstractCorrelatingMessageHandler
(MessageGroupProcessor processor, MessageGroupStore store, CorrelationStrategy correlationStrategy, ReleaseStrategy releaseStrategy) メソッドのサマリー
修飾子と型メソッド説明protected abstract void
afterRelease
(MessageGroup group, CollectionSE<Message<?>> completedMessages) MessageGroup のリリース後に実行する必要がある追加のロジックを提供できます。protected void
afterRelease
(MessageGroup group, CollectionSE<Message<?>> completedMessages, boolean timeout) タイムアウトのためにグループが解放または破棄されたために特別なアクションが必要な場合、サブクラスがオーバーライドすることがあります。protected void
completeGroup
(ObjectSE correlationKey, MessageGroup group, LockSE lock) protected CollectionSE<Message<?>>
completeGroup
(Message<?> message, ObjectSE correlationKey, MessageGroup group, LockSE lock) void
destroy()
protected void
expireGroup
(ObjectSE correlationKey, MessageGroup group, LockSE lock) protected int
findLastReleasedSequenceNumber
(ObjectSE groupId, CollectionSE<Message<?>> partialSequence) protected void
forceComplete
(MessageGroup group) サブクラスはこのメソッドを実装して、コンポーネント型情報を提供できます。protected CorrelationStrategy
破棄チャネルを返します。protected StringSE
protected EvaluationContext
protected MapSE<UUIDSE,
ScheduledFutureSE<?>> protected BiFunctionSE<Message<?>,
StringSE, StringSE> protected Expression
protected LockRegistry
protected long
構成済みのMessageGroupProcessor
を返します。protected ReleaseStrategy
protected void
handleMessageInternal
(Message<?> message) protected boolean
protected boolean
protected boolean
protected boolean
boolean
protected boolean
protected boolean
protected ObjectSE
obtainGroupTimeout
(MessageGroup group) protected void
onInit()
サブクラスは、初期化ロジック用にこれを実装できます。void
付属のexpireTimeout
を使用してMessageGroupStore.expireMessageGroups(long)
を実行します。protected void
remove
(MessageGroup group) void
setApplicationEventPublisher
(ApplicationEventPublisher applicationEventPublisher) void
setCorrelationStrategy
(CorrelationStrategy correlationStrategy) void
setDiscardChannel
(MessageChannel discardChannel) void
setDiscardChannelName
(StringSE discardChannelName) void
setExpireDuration
(DurationSE expireDuration) ストアから古い孤立したグループをクリーンアップする頻度をDuration
SE に構成します。void
setExpireDurationMillis
(long expireDuration) ストアから古い孤立したグループをクリーンアップする頻度をDuration
SE(ミリ単位)で構成します。void
setExpireGroupsUponTimeout
(boolean expireGroupsUponTimeout) タイムアウトのためにグループが完了した場合、グループを期限切れ(完全に削除)します。void
setExpireTimeout
(long expireTimeout) 古い孤立したグループをストアから削除するためのタイムアウトをミリ秒単位で構成します。void
setForceReleaseAdviceChain
(ListSE<Advice> forceReleaseAdviceChain) void
setGroupConditionSupplier
(BiFunctionSE<Message<?>, StringSE, StringSE> conditionSupplier) グループに追加されるメッセージからグループ条件を提供するようにBiFunction
SE を構成します。void
setGroupTimeoutExpression
(Expression groupTimeoutExpression) void
setLockRegistry
(LockRegistry lockRegistry) final void
setMessageStore
(MessageGroupStore store) void
setMinimumTimeoutForEmptyGroups
(long minimumTimeoutForEmptyGroups) デフォルトでは、MessageGroupStoreReaper が部分グループを期限切れにするように構成されている場合、空のグループも削除されます。void
setOutputProcessor
(MessageGroupProcessor outputProcessor) 出力関数にMessageGroupProcessor
を指定します。void
setPopSequence
(boolean popSequence) 出力メッセージに対してMessageBuilder.popSequenceDetails()
を実行するかどうか。void
setReleaseLockBeforeSend
(boolean releaseLockBeforeSend) true に設定すると、出力を送信する前にメッセージグループロックが解除されます。void
setReleasePartialSequences
(boolean releasePartialSequences) 基礎となるデフォルトのSequenceSizeReleaseStrategy
にreleasePartialSequences
を設定します。void
setReleaseStrategy
(ReleaseStrategy releaseStrategy) void
setSendPartialResultOnExpiry
(boolean sendPartialResultOnExpiry) void
start()
void
stop()
protected MessageGroup
protected void
verifyResultCollectionConsistsOfMessages
(CollectionSE<?> elements) クラス org.springframework.integration.handler.AbstractMessageProducingHandler から継承されたメソッド
addNotPropagatedHeaders, createOutputMessage, getNotPropagatedHeaders, getOutputChannel, isAsync, messageBuilderForReply, produceOutput, resolveErrorChannel, sendErrorMessage, sendOutput, sendOutputs, setAsync, setNotPropagatedHeaders, setOutputChannel, setOutputChannelName, setSendTimeout, setupMessageProcessor, shouldCopyRequestHeaders, shouldSplitOutput, updateNotPropagatedHeaders
クラス org.springframework.integration.handler.AbstractMessageHandler から継承されたメソッド
handleMessage, onComplete, onError, onNext, onSubscribe, setObservationConvention
クラス org.springframework.integration.handler.MessageHandlerSupport から継承されたメソッド
buildSendTimer, getIntegrationPatternType, getManagedName, getManagedType, getMetricsCaptor, getObservationRegistry, getOrder, getOverrides, isLoggingEnabled, isObserved, registerMetricsCaptor, registerObservationRegistry, sendTimer, setLoggingEnabled, setManagedName, setManagedType, setOrder, setShouldTrack, shouldTrack
クラス org.springframework.integration.context.IntegrationObjectSupport から継承されたメソッド
afterPropertiesSet, extractTypeIfPossible, generateId, getApplicationContext, getApplicationContextId, getBeanDescription, getBeanFactory, getBeanName, getChannelResolver, getComponentName, getConversionService, getExpression, getIntegrationProperties, getMessageBuilderFactory, getTaskScheduler, isInitialized, setApplicationContext, setBeanFactory, setBeanName, setChannelResolver, setComponentName, setConversionService, setMessageBuilderFactory, setPrimaryExpression, setTaskScheduler, toString
クラス java.lang.ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, wait, waitSE, waitSE
インターフェース reactor.core.CoreSubscriber から継承されたメソッド
currentContext
インターフェース org.springframework.integration.support.management.IntegrationManagement から継承されたメソッド
getThisAs
インターフェース org.springframework.messaging.MessageHandler から継承されたメソッド
handleMessage
インターフェース org.springframework.integration.support.context.NamedComponent から継承されたメソッド
getBeanName, getComponentName
コンストラクターの詳細
AbstractCorrelatingMessageHandler
public AbstractCorrelatingMessageHandler(MessageGroupProcessor processor, MessageGroupStore store, CorrelationStrategy correlationStrategy, ReleaseStrategy releaseStrategy) AbstractCorrelatingMessageHandler
AbstractCorrelatingMessageHandler
メソッドの詳細
setLockRegistry
setMessageStore
setCorrelationStrategy
setReleaseStrategy
setGroupTimeoutExpression
setForceReleaseAdviceChain
setOutputProcessor
出力関数にMessageGroupProcessor
を指定します。- パラメーター:
outputProcessor
- 使用するMessageGroupProcessor
- 導入:
- 5.0
getOutputProcessor
構成済みのMessageGroupProcessor
を返します。- 戻り値:
- 設定された
MessageGroupProcessor
- 導入:
- 5.2
setDiscardChannel
setDiscardChannelName
setSendPartialResultOnExpiry
public void setSendPartialResultOnExpiry(boolean sendPartialResultOnExpiry) setMinimumTimeoutForEmptyGroups
public void setMinimumTimeoutForEmptyGroups(long minimumTimeoutForEmptyGroups) デフォルトでは、MessageGroupStoreReaper が部分グループを期限切れにするように構成されている場合、空のグループも削除されます。グループが正常に解放された後、空のグループが存在します。これは、遅れて到着するメッセージの検出と破棄を可能にするためです。空のグループを部分的なグループの期限切れよりも長いスケジュールで期限切れにする場合は、このプロパティを設定します。空のグループは、少なくともこのミリ秒の間変更されない限り、MessageStore から削除されません。- パラメーター:
minimumTimeoutForEmptyGroups
- 最小タイムアウト。
setReleasePartialSequences
public void setReleasePartialSequences(boolean releasePartialSequences) 基礎となるデフォルトのSequenceSizeReleaseStrategy
にreleasePartialSequences
を設定します。他のリリース戦略では無視されます。- パラメーター:
releasePartialSequences
- リリースを許可する場合は true。
setExpireGroupsUponTimeout
public void setExpireGroupsUponTimeout(boolean expireGroupsUponTimeout) タイムアウトのためにグループが完了した場合、グループを期限切れ(完全に削除)します。デフォルトは true- パラメーター:
expireGroupsUponTimeout
- 設定する expireGroupsUponTimeout- 導入:
- 4.1
setPopSequence
public void setPopSequence(boolean popSequence) 出力メッセージに対してMessageBuilder.popSequenceDetails()
を実行するかどうか。デフォルトは true です。このオプションは、applySequence=true
を使用して最も近いアップストリームコンポーネント(スプリッターなど)によって追加されたシーケンス情報を削除します。- パラメーター:
popSequence
- 使用するブールフラグ。- 導入:
- 5.1
isReleaseLockBeforeSend
protected boolean isReleaseLockBeforeSend()setReleaseLockBeforeSend
public void setReleaseLockBeforeSend(boolean releaseLockBeforeSend) true に設定すると、出力を送信する前にメッセージグループロックが解除されます。これが必要になる理由の詳細については、リファレンスマニュアルの「アグリゲーター」セクションの「デッドロックの回避」を参照してください。- パラメーター:
releaseLockBeforeSend
- ロックを解除するには true。- 導入:
- 5.1.1
setExpireTimeout
public void setExpireTimeout(long expireTimeout) 古い孤立したグループをストアから削除するためのタイムアウトをミリ秒単位で構成します。起動時に使用され、expireDuration
が提供されると、purgeOrphanedGroups()
を実行するためのタスクがその期間でスケジュールされます。forceReleaseProcessor
は、「強制完了」オプションに従って、これらの期限切れグループを処理するために使用されます。永続メッセージグループストアが使用され、再起動後にそのグループに新しいメッセージが到着しない場合、グループは孤立する可能性があります。- パラメーター:
expireTimeout
- パージするストア内の古い孤立したグループを判別するためのミリ秒数。- 導入:
- 5.4
- 関連事項:
setExpireDurationMillis
public void setExpireDurationMillis(long expireDuration) ストアから古い孤立したグループをクリーンアップする頻度をDuration
SE(ミリ単位)で構成します。- パラメーター:
expireDuration
-purgeOrphanedGroups()
を呼び出す頻度の遅延。- 導入:
- 5.4
- 関連事項:
setExpireDuration
ストアから古い孤立したグループをクリーンアップする頻度をDuration
SE に構成します。- パラメーター:
expireDuration
-purgeOrphanedGroups()
を呼び出す頻度の遅延。- 導入:
- 5.4
- 関連事項:
setGroupConditionSupplier
グループに追加されるメッセージからグループ条件を提供するようにBiFunction
SE を構成します。関数からのnull
の結果は、以前に設定された条件をリセットします。- パラメーター:
conditionSupplier
- グループに追加するメッセージからグループ条件を提供する機能。- 導入:
- 5.5
- 関連事項:
setApplicationEventPublisher
- 次で指定:
- インターフェース
ApplicationEventPublisherAware
のsetApplicationEventPublisher
onInit
protected void onInit()クラスからコピーされた説明:IntegrationObjectSupport
サブクラスは、初期化ロジック用にこれを実装できます。- オーバーライド:
- クラス
AbstractMessageProducingHandler
のonInit
getComponentType
クラスからコピーされた説明:IntegrationObjectSupport
サブクラスはこのメソッドを実装して、コンポーネント型情報を提供できます。- 次で指定:
- インターフェース
NamedComponent
のgetComponentType
- オーバーライド:
- クラス
MessageHandlerSupport
のgetComponentType
getMessageStore
getExpireGroupScheduledFutures
getCorrelationStrategy
getReleaseStrategy
getGroupConditionSupplier
getDiscardChannel
インターフェースからコピーされた説明:DiscardingMessageHandler
破棄チャネルを返します。- 次で指定:
- インターフェース
DiscardingMessageHandler
のgetDiscardChannel
- 戻り値:
- チャンネル。
getDiscardChannelName
isSendPartialResultOnExpiry
protected boolean isSendPartialResultOnExpiry()isSequenceAware
protected boolean isSequenceAware()getLockRegistry
isLockRegistrySet
protected boolean isLockRegistrySet()getMinimumTimeoutForEmptyGroups
protected long getMinimumTimeoutForEmptyGroups()isReleasePartialSequences
protected boolean isReleasePartialSequences()getGroupTimeoutExpression
getEvaluationContext
handleMessageInternal
- 次で指定:
- クラス
AbstractMessageHandler
のhandleMessageInternal
isExpireGroupsUponCompletion
protected boolean isExpireGroupsUponCompletion()afterRelease
protected abstract void afterRelease(MessageGroup group, CollectionSE<Message<?>> completedMessages) MessageGroup のリリース後に実行する必要がある追加のロジックを提供できます。- パラメーター:
group
- グループ。completedMessages
- 完了したメッセージ。
afterRelease
protected void afterRelease(MessageGroup group, CollectionSE<Message<?>> completedMessages, boolean timeout) タイムアウトのためにグループが解放または破棄されたために特別なアクションが必要な場合、サブクラスがオーバーライドすることがあります。デフォルトでは、afterRelease(MessageGroup, Collection)
が呼び出されます。- パラメーター:
group
- グループ。completedMessages
- 完了したメッセージ。timeout
- リリースまたは破棄がタイムアウトによるものである場合は true。
forceComplete
remove
findLastReleasedSequenceNumber
protected int findLastReleasedSequenceNumber(ObjectSE groupId, CollectionSE<Message<?>> partialSequence) store
expireGroup
completeGroup
completeGroup
protected CollectionSE<Message<?>> completeGroup(Message<?> message, ObjectSE correlationKey, MessageGroup group, LockSE lock) verifyResultCollectionConsistsOfMessages
obtainGroupTimeout
destroy
public void destroy()- 次で指定:
- インターフェース
DisposableBean
のdestroy
- 次で指定:
- インターフェース
IntegrationManagement
のdestroy
- オーバーライド:
- クラス
MessageHandlerSupport
のdestroy
start
public void start()- 次で指定:
- インターフェース
Lifecycle
のstart
- 次で指定:
- インターフェース
ManageableLifecycle
のstart
stop
public void stop()- 次で指定:
- インターフェース
Lifecycle
のstop
- 次で指定:
- インターフェース
ManageableLifecycle
のstop
isRunning
public boolean isRunning()- 次で指定:
- インターフェース
Lifecycle
のisRunning
- 次で指定:
- インターフェース
ManageableLifecycle
のisRunning
purgeOrphanedGroups
public void purgeOrphanedGroups()付属のexpireTimeout
を使用してMessageGroupStore.expireMessageGroups(long)
を実行します。いつでも外部から呼び出すことができます。内部的には、構成されたexpireDuration
を使用してスケジュールされたタスクから呼び出されます。- 導入:
- 5.4