pull method
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]');
}
}