modifyAckDeadline method

Future<void> modifyAckDeadline({
  1. required int ackDeadlineSeconds,
  2. required Iterable<String> ackIds,
  3. int retries = 5,
  4. required String subscription,
})

Modifies the ack deadline for a specific message. This method is useful to indicate that more time is needed to process a message by the subscriber, or to make the message available for redelivery if the processing was interrupted. Note that this does not modify the subscription-level ackDeadlineSeconds used for subsequent messages.

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<void> modifyAckDeadline({
  required int ackDeadlineSeconds,
  required Iterable<String> ackIds,
  int retries = 5,
  required String subscription,
}) async {
  assert(_initialized);
  _logger.fine('[modifyAckDeadline]: start -- [$subscription]');

  try {
    await _execute<Empty>(
      executor: () async {
        return await _pubsubApi.projects.subscriptions.modifyAckDeadline(
          ModifyAckDeadlineRequest(
            ackDeadlineSeconds: ackDeadlineSeconds,
            ackIds: ackIds.toList(),
          ),
          subscription.startsWith('projects/')
              ? subscription
              : 'projects/$_projectId/subscriptions/$subscription',
        );
      },
      retries: retries,
    );
  } finally {
    _logger.fine('[modifyAckDeadline]: complete -- [$subscription]');
  }
}