Interface MessagePaginationAction

  • All Superinterfaces:
    java.lang.Iterable<Message>, PaginationAction<Message,​MessagePaginationAction>, RestAction<java.util.List<Message>>

    public interface MessagePaginationAction
    extends PaginationAction<Message,​MessagePaginationAction>
    PaginationAction that paginates the message history endpoint.
    Note that this implementation is not considered thread-safe as modifications to the cache are not done with a lock. Calling methods on this class from multiple threads is not recommended.

    Must provide not-null MessageChannel to compile a valid pagination route.

    Limits:

    Minimum - 1
    Maximum - 100

    Example

    
     /**
      * Iterates messages in an async stream and stops once the limit has been reached.
      */
     public static void onEachMessageAsync(MessageChannel channel, Consumer<Message> consumer, int limit)
     {
         if (limit< 1)
             return;
         MessagePaginationAction action = channel.getIterableHistory();
         AtomicInteger counter = new AtomicInteger(limit);
         action.forEachAsync( (message)->
         {
             consumer.accept(message);
             // if false the iteration is terminated; else it continues
             return counter.decrementAndGet() == 0;
         });
     }
     
    Since:
    3.1
    See Also:
    MessageChannel.getIterableHistory()