クラス AbstractBrokerMessageHandler
- 実装されているすべてのインターフェース:
Aware、ApplicationEventPublisherAware、Lifecycle、Phased、SmartLifecycle、MessageHandler
MessageHandler の抽象基本クラス。- 導入:
- 4.0
- 作成者:
- Rossen Stoyanchev
フィールドのサマリー
フィールドインターフェース org.springframework.context.SmartLifecycle から継承されたフィールド
DEFAULT_PHASEコンストラクターの概要
コンストラクターコンストラクター説明AbstractBrokerMessageHandler(SubscribableChannel inboundChannel, MessageChannel outboundChannel, SubscribableChannel brokerChannel) 宛先プレフィックスのないコンストラクター(すべての宛先に一致)。AbstractBrokerMessageHandler(SubscribableChannel inboundChannel, MessageChannel outboundChannel, SubscribableChannel brokerChannel, CollectionSE<StringSE> destinationPrefixes) メッセージの宛先に一致する宛先プレフィックスを持つコンストラクター。メソッドのサマリー
修飾子と型メソッド説明protected booleancheckDestinationPrefix(StringSE destination) 指定された宛先のメッセージを処理する必要があるかどうか。protected MessageChannelgetClientOutboundChannelForSession(StringSE sessionId) クライアントへのメッセージ送信に使用する MessageChannel を取得します。preservePublishOrder=trueの場合はセッションごとのラッパーです。ブローカーに転送するメッセージをフィルタリングするために使用する宛先プレフィックスを返します。intgetPhase()このライフサイクルオブジェクトが実行されるはずのフェーズを返します。voidhandleMessage(Message<?> message) 指定されたメッセージを処理します。protected abstract voidhandleMessageInternal(Message<?> message) booleanbooleanメッセージブローカーが現在利用可能で、メッセージを処理できるかどうか。booleanメッセージが公開順に受信されるようにするかどうか。final booleanこのメッセージハンドラーが現在実行されているかどうかを確認します。protected voidprotected voidvoidこのオブジェクトが実行される ApplicationEventPublisher を設定します。voidsetAutoStartup(boolean autoStartup) voidsetPhase(int phase) このハンドラーが実行されるフェーズを設定します。voidsetPreservePublishOrder(boolean preservePublishOrder) クライアントが発行順にメッセージを受信する必要があるかどうか。voidsetUserDestinationPredicate(PredicateSE<StringSE> predicate) ユーザーの宛先でメッセージを識別するように述語を構成します。voidstart()このコンポーネントを起動します。protected voidvoidstop()このメソッドを返すとコンポーネントが完全に停止するように、通常は同期的にこのコンポーネントを停止します。final voidstop(RunnableSE callback) Lifecycle コンポーネントが現在実行中の場合、停止する必要があることを示します。protected void
フィールドの詳細
logger
コンストラクターの詳細
AbstractBrokerMessageHandler
public AbstractBrokerMessageHandler(SubscribableChannel inboundChannel, MessageChannel outboundChannel, SubscribableChannel brokerChannel) 宛先プレフィックスのないコンストラクター(すべての宛先に一致)。- パラメーター:
inboundChannel- クライアントからメッセージを受信するためのチャネル (たとえば、WebSocket クライアント)outboundChannel- クライアントにメッセージを送信するためのチャネル (たとえば、WebSocket クライアント)brokerChannel- アプリケーションがブローカーにメッセージを送信するためのチャネル
AbstractBrokerMessageHandler
public AbstractBrokerMessageHandler(SubscribableChannel inboundChannel, MessageChannel outboundChannel, SubscribableChannel brokerChannel, @Nullable CollectionSE<StringSE> destinationPrefixes) メッセージの宛先に一致する宛先プレフィックスを持つコンストラクター。- パラメーター:
inboundChannel- クライアントからメッセージを受信するためのチャネル (たとえば、WebSocket クライアント)outboundChannel- クライアントにメッセージを送信するためのチャネル (たとえば、WebSocket クライアント)brokerChannel- アプリケーションがブローカーにメッセージを送信するためのチャネルdestinationPrefixes- メッセージを除外するために使用するプレフィックス
メソッドの詳細
getClientInboundChannel
getClientOutboundChannel
getBrokerChannel
getDestinationPrefixes
ブローカーに転送するメッセージをフィルタリングするために使用する宛先プレフィックスを返します。宛先があり、宛先が一致しないメッセージは無視されます。デフォルトでは、これは設定されていません。
setUserDestinationPredicate
ユーザーの宛先でメッセージを識別するように述語を構成します。destination prefixesが構成されていない場合、これは、ブローカーに到達する前にUserDestinationMessageHandlerによって前処理される必要があるユーザー宛先メッセージを認識してスキップできます。- パラメーター:
predicate- null 以外の宛先を持つユーザーメッセージをユーザー宛先を持つメッセージとして識別するための述語。- 導入:
- 5.3.4
setPreservePublishOrder
public void setPreservePublishOrder(boolean preservePublishOrder) クライアントが発行順にメッセージを受信する必要があるかどうか。デフォルトでは、
"clientOutboundChannel"に送信されたメッセージは同じ順序で処理されない場合があります。これは、チャネルが ThreadPoolExecutor によってサポートされているため、順番に処理が保証されないためです。このフラグが
trueに設定されている場合、同じセッション内のメッセージは、公開順序を維持するために一度に 1 つずつ"clientOutboundChannel"に送信されます。- パラメーター:
preservePublishOrder- 順番に公開するかどうか- 導入:
- 5.1
isPreservePublishOrder
public boolean isPreservePublishOrder()メッセージが公開順に受信されるようにするかどうか。- 導入:
- 5.1
setApplicationEventPublisher
インターフェースからコピーされた説明:ApplicationEventPublisherAwareこのオブジェクトが実行される ApplicationEventPublisher を設定します。通常の Bean プロパティの設定後、InitializingBean の afterPropertiesSet などの init コールバックやカスタム init メソッドの前に呼び出されます。ApplicationContextAware の setApplicationContext の前に呼び出されます。
- 次で指定:
- インターフェース
ApplicationEventPublisherAwareのsetApplicationEventPublisher - パラメーター:
publisher- このオブジェクトによって使用されるイベント発行元
getApplicationEventPublisher
setAutoStartup
public void setAutoStartup(boolean autoStartup) isAutoStartup
public boolean isAutoStartup()インターフェースからコピーされた説明:SmartLifecycletrueが含まれるApplicationContextがリフレッシュされるときに、このLifecycleコンポーネントがコンテナーによって自動的に開始される場合、trueを返します。falseの値は、プレーンLifecycle実装に類似した、明示的なLifecycle.start()呼び出しを介してコンポーネントが開始されることを意図していることを示します。デフォルトの実装は
trueを返します。setPhase
public void setPhase(int phase) このハンドラーが実行されるフェーズを設定します。デフォルトでは
SmartLifecycle.DEFAULT_PHASEですが、@EnableWebSocketMessageBroker構成では 0 に設定されます。- 導入:
- 6.1.4
getPhase
public int getPhase()インターフェースからコピーされた説明:SmartLifecycleこのライフサイクルオブジェクトが実行されるはずのフェーズを返します。デフォルトの実装は、通常の
Lifecycle実装の前にstop()コールバックを実行できるようにするためにSmartLifecycle.DEFAULT_PHASEを返します。- 次で指定:
- インターフェース
PhasedのgetPhase - 次で指定:
- インターフェース
SmartLifecycleのgetPhase - 関連事項:
start
public void start()インターフェースからコピーされた説明:Lifecycleこのコンポーネントを起動します。コンポーネントがすでに実行されている場合は、例外をスローしないでください。
コンテナーの場合、これにより、自動起動しないコンポーネントも含め、適用されるすべてのコンポーネントにハードスタートシグナルが伝播されます。
startInternal
protected void startInternal()stop
public void stop()インターフェースからコピーされた説明:Lifecycleこのメソッドを返すとコンポーネントが完全に停止するように、通常は同期的にこのコンポーネントを停止します。非同期停止動作が必要な場合は、SmartLifecycleとそのstop(Runnable)バリアントの実装を検討してください。この停止通知は破棄前に送信されるとは限らないことに注意してください。通常のシャットダウンでは、一般的な破棄コールバックが伝播される前に、
LifecycleBean は最初に停止通知を受信します。ただし、コンテキストの存続期間中のホットリフレッシュまたは中断されたリフレッシュ試行では、特定の Bean の destroy メソッドが、停止シグナルを事前に考慮することなく呼び出されます。コンポーネントが実行されていない(まだ開始されていない)場合は、例外をスローしないでください。
コンテナーの場合、これは停止シグナルを適用するすべてのコンポーネントに伝播します。
stopInternal
protected void stopInternal()stop
インターフェースからコピーされた説明:SmartLifecycleLifecycle コンポーネントが現在実行中の場合、停止する必要があることを示します。提供されたコールバックは、
LifecycleProcessorによって使用され、共通のシャットダウン順序値を持つすべてのコンポーネントの順序付けられた、潜在的に同時のシャットダウンをサポートします。コールバック は、SmartLifecycleコンポーネントが実際に停止した後に実行する必要があります。LifecycleProcessorは、stopメソッドのこのバリアントのみを呼び出します。つまり、SmartLifecycle実装では、このメソッドの実装内に明示的に委譲されない限り、Lifecycle.stop()は呼び出されません。デフォルトの実装は
Lifecycle.stop()に委譲し、呼び出しスレッドで指定されたコールバックをすぐにトリガーします。2 つの間に同期がないことに注意してください。カスタム実装では、少なくとも共通のライフサイクルモニター(存在する場合)内に同じ手順を入れたい場合があります。- 次で指定:
- インターフェース
SmartLifecycleのstop - 関連事項:
isRunning
public final boolean isRunning()このメッセージハンドラーが現在実行されているかどうかを確認します。このメッセージハンドラーが実行されている場合でも、具象サブクラスの実装に応じて、
isBrokerAvailable()フラグが独立してオンとオフを交互に繰り返す場合があることに注意してください。isBrokerAvailable
public boolean isBrokerAvailable()メッセージブローカーが現在利用可能で、メッセージを処理できるかどうか。これは、このメッセージハンドラーが実行されているかどうかを示す
isRunning()フラグに追加されることに注意してください。言い換えると、メッセージハンドラーが最初に実行されている必要があり、その後、具象サブクラスの実装に応じて、#isBrokerAvailable()フラグがオンとオフを個別に切り替える場合があります。アプリケーションコンポーネントは、
org.springframework.context.ApplicationListener<BrokerAvailabilityEvent>を実装して、ブローカーが使用可能および使用不可になったときに通知を受け取ることができます。handleMessage
インターフェースからコピーされた説明:MessageHandler指定されたメッセージを処理します。- 次で指定:
- インターフェース
MessageHandlerのhandleMessage - パラメーター:
message- 処理するメッセージ
handleMessageInternal
checkDestinationPrefix
指定された宛先のメッセージを処理する必要があるかどうか。これは、次の条件のいずれかが当てはまる場合に当てはまります。- 宛先は、構成された
destination prefixesの 1 つで始まります。 - プレフィックスが設定されておらず、宛先が
userDestinationPredicateと一致していません。 - メッセージには宛先がありません。
- パラメーター:
destination- 確認する宛先- 戻り値:
- 宛先を処理する(true)かスキップする(false)か
- 宛先は、構成された
publishBrokerAvailableEvent
protected void publishBrokerAvailableEvent()getClientOutboundChannelForSession
クライアントへのメッセージ送信に使用する MessageChannel を取得します。preservePublishOrder=trueの場合はセッションごとのラッパーです。- 導入:
- 5.1