public abstract class AbstractBrokerMessageHandler extends ObjectSE implements MessageHandler, ApplicationEventPublisherAware, SmartLifecycle
MessageHandler
の抽象基本クラス。コンストラクターと説明 |
---|
AbstractBrokerMessageHandler(SubscribableChannel inboundChannel, MessageChannel outboundChannel, SubscribableChannel brokerChannel) 宛先プレフィックスのないコンストラクター(すべての宛先に一致)。 |
AbstractBrokerMessageHandler(SubscribableChannel inboundChannel, MessageChannel outboundChannel, SubscribableChannel brokerChannel, CollectionSE<StringSE> destinationPrefixes) メッセージの宛先に一致する宛先プレフィックスを持つコンストラクター。 |
修飾子と型 | メソッドと説明 |
---|---|
protected boolean | checkDestinationPrefix(StringSE destination) |
ApplicationEventPublisher | getApplicationEventPublisher() |
SubscribableChannel | getBrokerChannel() |
SubscribableChannel | getClientInboundChannel() |
MessageChannel | getClientOutboundChannel() |
CollectionSE<StringSE> | getDestinationPrefixes() |
int | getPhase() このオブジェクトのフェーズ値を返します。 |
void | handleMessage(Message<?> message) 指定されたメッセージを処理します。 |
protected abstract void | handleMessageInternal(Message<?> message) |
boolean | isAutoStartup() |
boolean | isBrokerAvailable() メッセージブローカーが現在利用可能で、メッセージを処理できるかどうか。 |
boolean | isRunning() このメッセージハンドラーが現在実行されているかどうかを確認します。 |
protected void | publishBrokerAvailableEvent() |
protected void | publishBrokerUnavailableEvent() |
void | setApplicationEventPublisher(ApplicationEventPublisher publisher) このオブジェクトが実行される ApplicationEventPublisher を設定します。 |
void | setAutoStartup(boolean autoStartup) |
void | start() このコンポーネントを起動します。 |
protected void | startInternal() |
void | stop() このメソッドを返すとコンポーネントが完全に停止するように、通常は同期的にこのコンポーネントを停止します。 |
void | stop(RunnableSE callback) Lifecycle コンポーネントが現在実行中の場合、停止する必要があることを示します。 |
protected void | stopInternal() |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
protected final Log logger
public AbstractBrokerMessageHandler(SubscribableChannel inboundChannel, MessageChannel outboundChannel, SubscribableChannel brokerChannel)
inboundChannel
- クライアントからメッセージを受信するためのチャネル (たとえば WebSocket クライアント)outboundChannel
- クライアントにメッセージを送信するためのチャネル (たとえば WebSocket クライアント)brokerChannel
- アプリケーションがブローカーにメッセージを送信するためのチャネル public AbstractBrokerMessageHandler(SubscribableChannel inboundChannel, MessageChannel outboundChannel, SubscribableChannel brokerChannel, @Nullable CollectionSE<StringSE> destinationPrefixes)
inboundChannel
- クライアントからメッセージを受信するためのチャネル (たとえば WebSocket クライアント)outboundChannel
- クライアントにメッセージを送信するためのチャネル (たとえば WebSocket クライアント)brokerChannel
- アプリケーションがブローカーにメッセージを送信するためのチャネル destinationPrefixes
- メッセージを除外するために使用するプレフィックス public SubscribableChannel getClientInboundChannel()
public MessageChannel getClientOutboundChannel()
public SubscribableChannel getBrokerChannel()
public CollectionSE<StringSE> getDestinationPrefixes()
public void setApplicationEventPublisher(@Nullable ApplicationEventPublisher publisher)
ApplicationEventPublisherAware
通常の Bean プロパティの設定後、InitializingBean の afterPropertiesSet などの init コールバックやカスタム init メソッドの前に呼び出されます。ApplicationContextAware の setApplicationContext の前に呼び出されます。
ApplicationEventPublisherAware
の setApplicationEventPublisher
publisher
- このオブジェクトによって使用されるイベント発行元 @Nullable public ApplicationEventPublisher getApplicationEventPublisher()
public void setAutoStartup(boolean autoStartup)
public boolean isAutoStartup()
SmartLifecycle
true
が含まれる ApplicationContext
がリフレッシュされるときに、この Lifecycle
コンポーネントがコンテナーによって自動的に開始される場合、true
を返します。false
の値は、プレーン Lifecycle
実装に類似した、明示的な Lifecycle.start()
呼び出しを介してコンポーネントが開始されることを意図していることを示します。
public int getPhase()
Phased
public void start()
Lifecycle
コンポーネントがすでに実行されている場合は、例外をスローしないでください。
コンテナーの場合、これは適用されるすべてのコンポーネントに開始シグナルを伝播します。
Lifecycle
の start
SmartLifecycle.isAutoStartup()
protected void startInternal()
public void stop()
Lifecycle
SmartLifecycle
とその stop(Runnable)
バリアントの実装を検討してください。 この停止通知が破棄の前に来るとは限らないことに注意してください。通常のシャットダウンでは、Lifecycle
Bean は一般的な破棄コールバックが伝達される前に、まず停止通知を受け取ります。ただし、コンテキストの有効期間中のホットリフレッシュ時、またはリフレッシュ試行が中止されたときは、destroy メソッドのみが呼び出されます。
コンポーネントがまだ開始されていない場合は、例外をスローしないでください。
コンテナーの場合、これは停止シグナルを適用するすべてのコンポーネントに伝播します。
Lifecycle
の stop
SmartLifecycle.stop(Runnable)
, DisposableBean.destroy()
protected void stopInternal()
public final void stop(RunnableSE callback)
SmartLifecycle
提供されたコールバックは、LifecycleProcessor
によって使用され、共通のシャットダウン順序値を持つすべてのコンポーネントの順序付けられた、潜在的に同時のシャットダウンをサポートします。コールバック は、SmartLifecycle
コンポーネントが実際に停止した後に実行する必要があります。
LifecycleProcessor
は、stop
メソッドのこのバリアントのみを呼び出します。つまり、SmartLifecycle
実装では、このメソッドの実装内に明示的に委譲されない限り、Lifecycle.stop()
は呼び出されません。
SmartLifecycle
の stop
Lifecycle.stop()
, Phased.getPhase()
public final boolean isRunning()
このメッセージハンドラーが実行されている場合でも、isBrokerAvailable()
フラグは、具象サブクラスの実装によっては、オンとオフを交互に切り替える場合があります。
public boolean isBrokerAvailable()
これは、このメッセージハンドラーが実行されているかどうかを示す isRunning()
フラグに追加されることに注意してください。つまり、メッセージハンドラーを最初に実行しておく必要があります。その後、具象サブクラスの実装に応じて、#isBrokerAvailable()
フラグをオンとオフの間で個別に切り替えることができます。
アプリケーションコンポーネントは、org.springframework.context.ApplicationListener<BrokerAvailabilityEvent>
を実装して、ブローカーが使用可能および使用不可になったときに通知を受け取ることができます。
public void handleMessage(Message<?> message)
MessageHandler
MessageHandler
の handleMessage
message
- 処理するメッセージ protected abstract void handleMessageInternal(Message<?> message)
protected void publishBrokerAvailableEvent()
protected void publishBrokerUnavailableEvent()