クラス SimpleMessageStore

実装されたすべてのインターフェース:
IterableSE<MessageGroup>BasicMessageGroupStoreChannelMessageStoreMessageGroupStoreMessageStore

public class SimpleMessageStore extends AbstractMessageGroupStore implements MessageStore, ChannelMessageStore
MessageStore および MessageGroupStore のマップベースのメモリ内実装。ストアの最大容量を強制します。
導入:
2.0
作成者:
Iwein Fuld, Mark Fisher, Dave Syer, Oleg Zhurakousky, Gary Russell, Ryan Barker, Artem Bilan
  • コンストラクターの詳細

    • SimpleMessageStore

      public SimpleMessageStore(int individualCapacity, int groupCapacity)
      最大サイズが指定された容量によって制限されるか、指定された容量が 1 未満の場合は無制限のサイズで SimpleMessageStore を作成します。容量は、addMessage(Message) を介して保存されたメッセージと AbstractMessageGroupStore.addMessageToGroup(Object, Message) を介して保存されたメッセージに個別に適用されます。どちらの場合も、容量は保存できるメッセージの数に適用され、その制限に達すると、別のメッセージを保存しようとすると例外が発生します。
      パラメーター:
      individualCapacity - メッセージ容量。
      groupCapacity - 各グループの容量。
    • SimpleMessageStore

      public SimpleMessageStore(int individualCapacity, int groupCapacity, long upperBoundTimeout)
      最大サイズが指定された容量とミリ秒単位のタイムアウトによって制限された SimpleMessageStore を作成して、ストアの空のスロットを待機します。
      パラメーター:
      individualCapacity - メッセージ容量。
      groupCapacity - 各グループの容量。
      upperBoundTimeout - ストアが最大容量に達した場合に待機する時間。
      導入:
      4.3
      関連事項:
    • SimpleMessageStore

      public SimpleMessageStore(int individualCapacity, int groupCapacity, LockRegistry lockRegistry)
      指定された容量によって制限される最大サイズの SimpleMessageStore と、メッセージグループ操作の同時実行性のための LockRegistry を作成します。
      パラメーター:
      individualCapacity - メッセージ容量。
      groupCapacity - 各グループの容量。
      lockRegistry - ロックレジストリ。
      関連事項:
    • SimpleMessageStore

      public SimpleMessageStore(int individualCapacity, int groupCapacity, long upperBoundTimeout, LockRegistry lockRegistry)
      指定された容量によって制限される最大サイズ、ストア内の空のスロットを待機するためのミリ秒単位のタイムアウト、メッセージグループ操作の同時実行のための LockRegistry を使用して SimpleMessageStore を作成します。
      パラメーター:
      individualCapacity - メッセージ容量。
      groupCapacity - 各グループの容量。
      upperBoundTimeout - ストアが最大容量にある場合に待機する時間
      lockRegistry - ロックレジストリ。
      導入:
      4.3
    • SimpleMessageStore

      public SimpleMessageStore(int capacity)
      個別のメッセージとグループ化されたメッセージに対して同じ容量の SimpleMessageStore を作成します。
      パラメーター:
      capacity - 容量。
    • SimpleMessageStore

      public SimpleMessageStore()
      容量無制限の SimpleMessageStore を作成します。
  • メソッドの詳細

    • setCopyOnGet

      public void setCopyOnGet(boolean copyOnGet)
      false に設定すると、getMessageGroup(Object) でのグループのコピーが無効になります。4.1 以降、これはデフォルトで false です。
      パラメーター:
      copyOnGet - コピーする場合は true、コピーしない場合は false。
      導入:
      4.0.1
    • setLockRegistry

      public void setLockRegistry(LockRegistry lockRegistry)
    • setLazyLoadMessageGroups

      public void setLazyLoadMessageGroups(boolean lazyLoadMessageGroups)
      クラスからコピーされた説明: AbstractMessageGroupStore
      BasicMessageGroupStore.getMessageGroup(Object) の結果を PersistentMessageGroup にラップするかどうかを指定します。グループのメッセージの遅延ロードプロキシデフォルトは true です。

      ターゲットロジックは SimpleMessageGroupFactory.GroupType.PERSISTENT に基づいています。

      オーバーライド:
      クラス AbstractMessageGroupStoresetLazyLoadMessageGroups 
      パラメーター:
      lazyLoadMessageGroups - 使用する boolean フラグ。
    • getMessageCount

      @ManagedAttribute public long getMessageCount()
      インターフェースからコピーされた説明: MessageStore
      ストア内のメッセージ数を示すオプションの属性。実装は例外をスローすることで応答を拒否する場合があります。
      次で指定:
      インターフェース MessageStoregetMessageCount 
      戻り値:
      メッセージの数。
    • addMessage

      public <T> Message<T> addMessage(Message<T> message)
      インターフェースからコピーされた説明: MessageStore
      提供されたメッセージを MessageStore に入れます。ストアはメッセージを内部で変更する必要がある場合があり、その場合、戻り値は入力と異なる場合があります。戻り値の ID は、MessageStore.getMessage(UUID) および MessageStore.removeMessage(UUID) が正しく動作するようにインデックスとして使用されます。メッセージは不変であるため、同じメッセージを複数回入力しても何も起こりません。
      次で指定:
      インターフェース MessageStoreaddMessage 
      型パラメーター:
      T - ペイロード型。
      パラメーター:
      message - メッセージ。
      戻り値:
      保存されたメッセージ。
    • getMessage

      public Message<?> getMessage(UUIDSE key)
      次で指定:
      インターフェース MessageStoregetMessage 
      パラメーター:
      key - メッセージ識別子。
      戻り値:
      指定された ID のメッセージ。MessageStore にその ID のメッセージが存在しない場合は null
    • getMessageMetadata

      public MessageMetadata getMessageMetadata(UUIDSE id)
      インターフェースからコピーされた説明: MessageStore
      提供された id によって MessageMessageMetadata を返します。
      次で指定:
      インターフェース MessageStoregetMessageMetadata 
      パラメーター:
      id - メッセージ識別子。
      戻り値:
      指定された ID の MessageMetadata、またはその ID のメッセージが MessageStore に存在しないか、メッセージにメタデータがない場合(以前のバージョンのレガシーメッセージ)は null
    • removeMessage

      public Message<?> removeMessage(UUIDSE key)
      インターフェースからコピーされた説明: MessageStore
      指定された ID を持つメッセージが MessageStore から削除されます (存在する場合)。その ID を持つメッセージがストアに存在しない場合は、null が返されます。このメソッドが MessageGroupStore に実装されている場合、このメッセージを保持するグループがない場合にのみ、メッセージはストアから削除されます。
      次で指定:
      インターフェース MessageStoreremoveMessage 
      パラメーター:
      key - メッセージ識別子。
      戻り値:
      メッセージ (ある場合)。
    • getMessageGroup

      public MessageGroup getMessageGroup(ObjectSE groupId)
      インターフェースからコピーされた説明: BasicMessageGroupStore
      このグループ ID で BasicMessageGroupStore.addMessageToGroup(Object, Message) を使用して保存された、現在 MessageStore にあるすべてのメッセージを返します。
      次で指定:
      インターフェース BasicMessageGroupStoregetMessageGroup 
      パラメーター:
      groupId - グループ識別子。
      戻り値:
      メッセージのグループ。このキーにメッセージが存在しない場合は空です。
    • copy

      protected MessageGroup copy(MessageGroup group)
      クラスからコピーされた説明: AbstractMessageGroupStore
      expireMessageGroups によって使用されます。グループが現在から期限切れになるまでの間に変更されたかどうかを適切に検出できるように、リーパーの実行時にグループのスナップショットを返す必要があります。永続ストアには必要ないため、デフォルトの動作ではグループのみを返します。
      オーバーライド:
      クラス AbstractMessageGroupStorecopy 
      パラメーター:
      group - グループ。
      戻り値:
      グループ、またはコピー。
    • addMessagesToGroup

      public void addMessagesToGroup(ObjectSE groupId, Message<?>... messages)
      インターフェースからコピーされた説明: MessageGroupStore
      グループ ID に関連付けてメッセージを保存します。これは、メッセージをグループ化するために使用できます。
      次で指定:
      インターフェース MessageGroupStoreaddMessagesToGroup 
      パラメーター:
      groupId - メッセージを保存するグループ ID。
      messages - 追加するメッセージ。
    • removeMessageGroup

      public void removeMessageGroup(ObjectSE groupId)
      インターフェースからコピーされた説明: BasicMessageGroupStore
      この ID のメッセージグループを削除します。
      次で指定:
      インターフェース BasicMessageGroupStoreremoveMessageGroup 
      パラメーター:
      groupId - 削除するグループの ID。
    • removeMessagesFromGroup

      public void removeMessagesFromGroup(ObjectSE groupId, CollectionSE<Message<?>> messages)
      インターフェースからコピーされた説明: MessageGroupStore
      グループからのメッセージの削除を永続化します。
      次で指定:
      インターフェース MessageGroupStoreremoveMessagesFromGroup 
      パラメーター:
      groupId - メッセージを含むグループの groupId。
      messages - 削除するメッセージ。
    • getMessageFromGroup

      @Nullable public Message<?> getMessageFromGroup(ObjectSE groupId, UUIDSE messageId)
      インターフェースからコピーされた説明: MessageGroupStore
      ID を使用してグループから Message を取得します。メッセージがリクエストされたグループに属していない場合は、null を返します。
      次で指定:
      インターフェース MessageGroupStoregetMessageFromGroup 
      パラメーター:
      groupId - メッセージを含むグループの groupId。
      messageId - メッセージ ID。
      戻り値:
      リクエストされたグループに属している場合は、ID によるメッセージ。
    • removeMessageFromGroupById

      public boolean removeMessageFromGroupById(ObjectSE groupId, UUIDSE messageId)
      インターフェースからコピーされた説明: MessageGroupStore
      グループからメッセージを削除します。
      次で指定:
      インターフェース MessageGroupStoreremoveMessageFromGroupById 
      パラメーター:
      groupId - メッセージを含むグループの groupId。
      messageId - 削除するメッセージ ID。
      戻り値:
      メッセージが削除された場合は true。
    • iterator

      public IteratorSE<MessageGroup> iterator()
      次で指定:
      インターフェース IterableSE<MessageGroup>iterator 
      次で指定:
      インターフェース MessageGroupStoreiterator 
      戻り値:
      現在累積されている MessageGroup の反復子。
    • setGroupCondition

      public void setGroupCondition(ObjectSE groupId, StringSE condition)
      インターフェースからコピーされた説明: MessageGroupStore
      グループに条件文を追加します。後でグループの意思決定に使用できます。相関ハンドラーのリリース戦略では、グループ内のすべてのメッセージを繰り返す代わりに、この条件を調べることができます。
      次で指定:
      インターフェース MessageGroupStoresetGroupCondition 
      パラメーター:
      groupId - グループ識別子。
      condition - グループに保存する条件。
    • setLastReleasedSequenceNumberForGroup

      public void setLastReleasedSequenceNumberForGroup(ObjectSE groupId, int sequenceNumber)
      インターフェースからコピーされた説明: MessageGroupStore
      最後にリリースされたメッセージのシーケンス番号を設定できます。ユースケースの並べ替えに使用
      次で指定:
      インターフェース MessageGroupStoresetLastReleasedSequenceNumberForGroup 
      パラメーター:
      groupId - グループ識別子。
      sequenceNumber - シーケンス番号。
    • completeGroup

      public void completeGroup(ObjectSE groupId)
      インターフェースからコピーされた説明: MessageGroupStore
      これで MessageGroup が完成します。MessageGroup の補完は一般に、このグループに対してそれ以上の変異操作の実行を許可すべきではないことを意味します。たとえば、グループから新しいメッセージを追加 / 削除する試みは許可されるべきではありません。
      次で指定:
      インターフェース MessageGroupStorecompleteGroup 
      パラメーター:
      groupId - グループ識別子。
    • pollMessageFromGroup

      public Message<?> pollMessageFromGroup(ObjectSE groupId)
      インターフェースからコピーされた説明: BasicMessageGroupStore
      この MessageGroup からのメッセージのポーリング(実装でサポートされている場合は FIFO スタイル)と同時に、ポーリングされた Message も削除します。
      次で指定:
      インターフェース BasicMessageGroupStorepollMessageFromGroup 
      パラメーター:
      groupId - グループ識別子。
      戻り値:
      メッセージ。
    • messageGroupSize

      public int messageGroupSize(ObjectSE groupId)
      インターフェースからコピーされた説明: BasicMessageGroupStore
      この MessageGroup のサイズを返します。
      次で指定:
      インターフェース BasicMessageGroupStoremessageGroupSize 
      パラメーター:
      groupId - グループ識別子。
      戻り値:
      サイズ。
    • getGroupMetadata

      public MessageGroupMetadata getGroupMetadata(ObjectSE groupId)
      インターフェースからコピーされた説明: MessageGroupStore
      メッセージをフェッチせずにグループメタデータを取得します。他のすべてのグループプロパティを提供する必要があります。最初のメッセージの ID を含めることができます。
      次で指定:
      インターフェース MessageGroupStoregetGroupMetadata 
      オーバーライド:
      クラス AbstractMessageGroupStoregetGroupMetadata 
      パラメーター:
      groupId - グループ ID。
      戻り値:
      メタデータ。
    • getOneMessageFromGroup

      public Message<?> getOneMessageFromGroup(ObjectSE groupId)
      インターフェースからコピーされた説明: MessageGroupStore
      MessageGroup から 1 つの Message を返します。
      次で指定:
      インターフェース MessageGroupStoregetOneMessageFromGroup 
      パラメーター:
      groupId - グループ識別子。
      戻り値:
      Message
    • getMessagesForGroup

      public CollectionSE<Message<?>> getMessagesForGroup(ObjectSE groupId)
      インターフェースからコピーされた説明: MessageGroupStore
      指定されたグループ ID のメッセージを取得します。
      次で指定:
      インターフェース MessageGroupStoregetMessagesForGroup 
      パラメーター:
      groupId - メッセージを取得するグループ ID。
      戻り値:
      グループのメッセージ。
    • clearMessageGroup

      public void clearMessageGroup(ObjectSE groupId)