クラス SimpMessagingTemplate

実装されたすべてのインターフェース:
MessageSendingOperations<StringSE>SimpMessageSendingOperations

public class SimpMessagingTemplate extends AbstractMessageSendingTemplate<StringSE> implements SimpMessageSendingOperations
SimpMessageSendingOperations の実装。

ユーザーにメッセージを送信するためのメソッドも提供します。ユーザー宛先の詳細については、UserDestinationResolver を参照してください。

導入:
4.0
作成者:
Rossen Stoyanchev
  • コンストラクターの詳細

    • SimpMessagingTemplate

      public SimpMessagingTemplate(MessageChannel messageChannel)
      新しい SimpMessagingTemplate インスタンスを作成します。
      パラメーター:
      messageChannel - メッセージチャンネル (非 null)
  • メソッドの詳細

    • getMessageChannel

      public MessageChannel getMessageChannel()
      設定されたメッセージチャネルを返します。
    • setUserDestinationPrefix

      public void setUserDestinationPrefix(StringSE prefix)
      特定のユーザーをターゲットとする宛先に使用するプレフィックスを構成します。

      デフォルト値は "/user/" です。

      関連事項:
    • getUserDestinationPrefix

      public StringSE getUserDestinationPrefix()
      設定されたユーザー宛先プレフィックスを返します。
    • setSendTimeout

      public void setSendTimeout(long sendTimeout)
      送信操作に使用するタイムアウト値をミリ秒単位で指定します。
    • getSendTimeout

      public long getSendTimeout()
      設定された送信タイムアウト(ミリ秒単位)を返します。
    • setHeaderInitializer

      public void setHeaderInitializer(@Nullable MessageHeaderInitializer headerInitializer)
      MessageHeaderInitializer を構成して、SimpMessagingTemplate を介して作成されたすべてのメッセージのヘッダーに適用します。

      デフォルトでは、このプロパティは設定されていません。

    • getHeaderInitializer

      @Nullable public MessageHeaderInitializer getHeaderInitializer()
      設定済みのヘッダー初期化子を返します。
    • send

      public void send(Message<?> message)
      指定されたメッセージのヘッダーにすでに SimpMessageHeaderAccessor#DESTINATION_HEADER が含まれている場合、メッセージは変更なしで送信されます。

      宛先ヘッダーがまだ存在しない場合、メッセージは構成された defaultDestination に送信され、構成されていない場合は IllegalStateException が発生します。

      次で指定:
      インターフェース MessageSendingOperations<StringSE>send 
      オーバーライド:
      クラス AbstractMessageSendingTemplate<StringSE>send 
      パラメーター:
      message - 送信するメッセージ (非 null)
    • doSend

      protected void doSend(StringSE destination, Message<?> message)
      次で指定:
      クラス AbstractMessageSendingTemplate<StringSE>doSend 
    • convertAndSendToUser

      public void convertAndSendToUser(StringSE user, StringSE destination, ObjectSE payload) throws MessagingException
      インターフェースからコピーされた説明: SimpMessageSendingOperations
      指定されたユーザーにメッセージを送信します。
      次で指定:
      インターフェース SimpMessageSendingOperationsconvertAndSendToUser 
      パラメーター:
      user - メッセージを受信するユーザー。
      destination - メッセージの送信先。
      payload - 送信するペイロード
      例外:
      MessagingException
    • convertAndSendToUser

      public void convertAndSendToUser(StringSE user, StringSE destination, ObjectSE payload, @Nullable MapSE<StringSE,ObjectSE> headers) throws MessagingException
      インターフェースからコピーされた説明: SimpMessageSendingOperations
      指定されたユーザーにメッセージを送信します。

      デフォルトでは、ヘッダーはネイティブヘッダー(STOMP など)として解釈され、結果の Spring Message の特別なキーに保存されます。実際には、メッセージがアプリケーションを離れると、提供されたヘッダーがメッセージに含まれ、宛先(STOMP クライアントまたはブローカーなど)に配信されます。

      マップにすでにキー "nativeHeaders" が含まれているか、SimpMessageHeaderAccessor で準備されている場合、ヘッダーが直接使用されます。一般的な期待されるケースは、コンテンツ型(メッセージ変換に影響を与えるため)とネイティブヘッダーの提供です。これは次のように実行できます。

       SimpMessageHeaderAccessor accessor = SimpMessageHeaderAccessor.create();
       accessor.setContentType(MimeTypeUtils.TEXT_PLAIN);
       accessor.setNativeHeader("foo", "bar");
       accessor.setLeaveMutable(true);
       MessageHeaders headers = accessor.getMessageHeaders();
       messagingTemplate.convertAndSendToUser(user, destination, payload, headers);
       

      注意 MessageHeaders が上記の例のように可変である場合、このインターフェースの実装は、通知を受け取り、同じインスタンスのヘッダーを(コピーまたは再作成するのではなく)更新してから、最終メッセージを送信する前に不変に設定する必要があります。

      次で指定:
      インターフェース SimpMessageSendingOperationsconvertAndSendToUser 
      パラメーター:
      user - メッセージを受信するユーザー (null であってはなりません)
      destination - メッセージの送信先 (null であってはなりません)
      payload - 送信するペイロード (null の場合があります)
      headers - メッセージヘッダー (null の場合があります)
      例外:
      MessagingException
    • convertAndSendToUser

      public void convertAndSendToUser(StringSE user, StringSE destination, ObjectSE payload, @Nullable MessagePostProcessor postProcessor) throws MessagingException
      インターフェースからコピーされた説明: SimpMessageSendingOperations
      指定されたユーザーにメッセージを送信します。
      次で指定:
      インターフェース SimpMessageSendingOperationsconvertAndSendToUser 
      パラメーター:
      user - メッセージを受信するユーザー (null であってはなりません)
      destination - メッセージの送信先 (null であってはなりません)
      payload - 送信するペイロード (null の場合があります)
      postProcessor - 作成されたメッセージを後処理または変更する postProcessor
      例外:
      MessagingException
    • convertAndSendToUser

      public void convertAndSendToUser(StringSE user, StringSE destination, ObjectSE payload, @Nullable MapSE<StringSE,ObjectSE> headers, @Nullable MessagePostProcessor postProcessor) throws MessagingException
      インターフェースからコピーされた説明: SimpMessageSendingOperations
      指定されたユーザーにメッセージを送信します。

      入力ヘッダーに関する重要な注意事項については、MessageSendingOperations.convertAndSend(Object, Object, java.util.Map) を参照してください。

      次で指定:
      インターフェース SimpMessageSendingOperationsconvertAndSendToUser 
      パラメーター:
      user - メッセージを受信するユーザー
      destination - メッセージの送信先
      payload - 送信するペイロード
      headers - メッセージヘッダー
      postProcessor - 作成されたメッセージを後処理または変更する postProcessor
      例外:
      MessagingException
    • processHeadersToSend

      protected MapSE<StringSE,ObjectSE> processHeadersToSend(@Nullable MapSE<StringSE,ObjectSE> headers)
      新しいマップを作成し、指定されたヘッダーをキー NATIVE_HEADERS に配置します。

      入力ヘッダーマップを宛先に送信されるヘッダーとして効果的に扱います。

      ただし、指定されたヘッダーにすでにキー NATIVE_HEADERS が含まれている場合、同じヘッダーインスタンスが変更なしで返されます。

      また、指定されたヘッダーが MessageHeaderAccessor.getMessageHeaders() で準備および取得された場合、同じヘッダーインスタンスも変更なしで返されます。

      オーバーライド:
      クラス AbstractMessageSendingTemplate<StringSE>processHeadersToSend 
      パラメーター:
      headers - 送信するヘッダー (または、存在しない場合は null )
      戻り値:
      送信する実際のヘッダー (または、存在しない場合は null )