Class MessagePaginationAction

  • All Implemented Interfaces:
    java.lang.Iterable<Message>

    public class MessagePaginationAction
    extends PaginationAction<Message,​MessagePaginationAction>
    PaginationAction that paginates the endpoints Route.Messages.GET_MESSAGE_HISTORY.

    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