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