pull method

Future<List<ReceivedMessage>> pull({
  1. required int maxMessages,
  2. int retries = 5,
  3. bool? returnImmediately,
  4. required String subscription,
})

Pulls messages from the server. The server may return UNAVAILABLE if there are too many concurrent pull requests pending for the given subscription.

The subscription name can be just the simple name or it can be the fully quantified name in the format: projects/{project}/subscriptions/{subscription}.

Implementation

Future<List<ReceivedMessage>> pull({
  required int maxMessages,
  int retries = 5,
  bool? returnImmediately,
  required String subscription,
}) async {
  assert(_initialized);
  _logger.fine('[pull]: start -- [$subscription]');
  try {
    final messages = (await _execute<PullResponse>(
      executor: () async {
        final result = await _pubsubApi.projects.subscriptions.pull(
          PullRequest(
            maxMessages: maxMessages,
            returnImmediately: returnImmediately,
          ),
          subscription.startsWith('projects/')
              ? subscription
              : 'projects/$_projectId/subscriptions/$subscription',
        );

        return result;
      },
      retries: retries,
    ))
        .receivedMessages;

    return messages ?? const <ReceivedMessage>[];
  } finally {
    _logger.fine('[pull]: complete -- [$subscription]');
  }
}