ack method

Future<void> ack({
  1. required String messageId,
  2. String? transactionId,
  3. bool requestReceipt = false,
})

Acknowledges a message

Implementation

Future<void> ack({
  required String messageId,
  String? transactionId,
  bool requestReceipt = false,
}) async {
  _ensureConnected();

  String? receiptId;
  if (requestReceipt) {
    receiptId = _generateReceiptId();
  }

  final ackFrame = StompFrameFactory.ack(
    id: messageId,
    transaction: transactionId,
    receipt: receiptId,
  );

  await _sendFrame(ackFrame);

  // Add to transaction if specified
  if (transactionId != null) {
    _transactionManager.addFrameToTransaction(transactionId, ackFrame);
  }

  // Process acknowledgment
  try {
    _ackManager.acknowledge(messageId);
  } catch (e) {
    _logger.warning('Error processing ACK for message $messageId: $e');
  }

  // Wait for receipt if requested
  if (receiptId != null) {
    await _waitForReceipt(receiptId, _timeout);
  }
}