demonstrateTransactions function
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;
}
}