Interface MessageLogReceiverEndpoint

All Superinterfaces:
MessageEndpoint, MessageReceiverEndpoint
All Known Implementing Classes:
AbstractMessageLogReceiverEndpoint, DelegateMessageLogReceiverEndpoint

public interface MessageLogReceiverEndpoint
extends MessageReceiverEndpoint
Receiver-side MessageEndpoint endpoint of a Message Channel that matches random-access like reading of messages using ChannelPositions.

Message Endpoint

MessageLogReceiverEndpoints are endpoints for Publish-Subscribe Channels:

Publish-Subscribe Channel

See Also:
EIP: Publish-Subscribe Channel
  • Method Details

    • consume

      @Nonnull default java.util.concurrent.CompletableFuture<ChannelPosition> consume​(@Nonnull ChannelPosition startFrom)
      Beginning at the startFrom position, messages are consumed from the message log, until the stopCondition is true.

      Takes zero or more messages from the channel, calls MessageEndpoint.intercept(TextMessage) for every message, and notifies the registered consumers with the intercepted message, or drops the message, if intercept returns null.

      Consumption starts with the first message after startFrom and finishes when either the stopCondition is met, or the application is shutting down.

      The returned ChannelPosition is the position of the last message that was processed by the MessageLogReceiverEndpoint - whether it was dropped or consumed.

      The registered consumers are used as a callback for consumed messages.

      Parameters:
      startFrom - the start position used to proceed message consumption
      Returns:
      ChannelPosition
    • consumeUntil

      @Nonnull java.util.concurrent.CompletableFuture<ChannelPosition> consumeUntil​(@Nonnull ChannelPosition startFrom, @Nonnull java.util.function.Predicate<ShardResponse> stopCondition)
      Beginning at the startFrom position, messages are consumed from the message log, until the stopCondition is true.

      If the message-log is sharded, the predicate must be true for every shard: otherwise, message consumption would continue on other shards.

      Takes zero or more messages from the channel, calls MessageEndpoint.intercept(TextMessage) for every message, and notifies the registered consumers with the intercepted message, or drops the message, if intercept returns null.

      Consumption starts with the first message after startFrom and finishes when either the stopCondition is met, or the application is shutting down.

      The returned ChannelPosition is the position of the last message that was processed by the MessageLogReceiverEndpoint - whether it was dropped or consumed.

      The registered consumers are used as a callback for consumed messages. A MessageDispatcher can be used as a consumer, if multiple consumers, or consumers with message payloads other than String are required.

      Parameters:
      startFrom - the start position used to proceed message consumption
      stopCondition - the predicate used to test if message consumption should be stopped. In most cases, the predicates defined in StopCondition should be sufficient.
      Returns:
      ChannelPosition
    • stop

      void stop()
      Stops consumption of messages and shuts down the MessageLogReceiverEndpoint.