demonstrateTransactions function

Future<void> demonstrateTransactions(
  1. StompClient client
)

Implementation

Future<void> demonstrateTransactions(StompClient client) async {
  print('\n💳 Example 3: Transactions');

  // Begin a transaction
  final transaction = await client.beginTransaction();
  print('✅ Transaction started: ${transaction.id}');

  try {
    // Send multiple messages within the transaction
    await client.send(
      destination: '/queue/orders',
      body: 'Order #1: 10 widgets',
      transactionId: transaction.id,
    );

    await client.send(
      destination: '/queue/orders',
      body: 'Order #2: 5 gadgets',
      transactionId: transaction.id,
    );

    print('📦 Added 2 orders to transaction');

    // Commit the transaction
    await client.commitTransaction(transactionId: transaction.id);
    print('✅ Transaction committed successfully');

  } catch (e) {
    // Abort the transaction on error
    await client.abortTransaction(transactionId: transaction.id);
    print('❌ Transaction aborted due to error: $e');
    rethrow;
  }
}