Rolls back a channel transaction's pending broker operations instead of committing them.
The examples focus on the operation itself, including the important distinction: commitTransaction confirms the pending channel transaction.
What It Does
Use the examples below to observe the behavior on a small dataset before extending it to application code.
Syntax and Return Value
AMQPChannel::rollbackTransaction(): void
The displayed signature describes the API or identifies any correction or optional dependency. When a parameter is optional, supply it only when the task requires it.
Example 1: Basic Use
Requires the PECL amqp extension and a reachable configured broker. Do not assume the broker exists on a plain PHP installation; transactions apply only to the AMQP channel.
<?php
$connection = new AMQPConnection([
"host" => getenv("AMQP_HOST") ?: "127.0.0.1",
"login" => getenv("AMQP_USER") ?: throw new RuntimeException("AMQP_USER is required"),
"password" => getenv("AMQP_PASSWORD") ?: throw new RuntimeException("AMQP_PASSWORD is required"),
]);
$connection->connect();
$channel = new AMQPChannel($connection);
$channel->startTransaction();
$channel->rollbackTransaction();
echo "rolled back";
$connection->disconnect();
This example is meant for a configured application environment; output depends on the installed extension, external service, or database contents.
Example 2: Checking Behavior
Requires the PECL amqp extension and a reachable configured broker. Do not assume the broker exists on a plain PHP installation; transactions apply only to the AMQP channel. AMQP channel transaction control is separate from a SQL transaction.
<?php
$connection = new AMQPConnection([
"host" => getenv("AMQP_HOST") ?: "127.0.0.1",
"login" => getenv("AMQP_USER") ?: throw new RuntimeException("AMQP_USER is required"),
"password" => getenv("AMQP_PASSWORD") ?: throw new RuntimeException("AMQP_PASSWORD is required"),
]);
$connection->connect();
$channel = new AMQPChannel($connection);
$channel->startTransaction();
$channel->rollbackTransaction();
echo "transaction rolled back on channel";
$connection->disconnect();
This example is meant for a configured application environment; output depends on the installed extension, external service, or database contents.
Example 3: Practical Example
Requires the PECL amqp extension and a reachable configured broker. Do not assume the broker exists on a plain PHP installation; transactions apply only to the AMQP channel. AMQP channel transaction control is separate from a SQL transaction.
<?php
$connection = new AMQPConnection([
"host" => getenv("AMQP_HOST") ?: "127.0.0.1",
"login" => getenv("AMQP_USER") ?: throw new RuntimeException("AMQP_USER is required"),
"password" => getenv("AMQP_PASSWORD") ?: throw new RuntimeException("AMQP_PASSWORD is required"),
]);
$connection->connect();
$channel = new AMQPChannel($connection);
$channel->startTransaction();
$channel->rollbackTransaction();
echo "pending broker operations cancelled";
$connection->disconnect();
This example is meant for a configured application environment; output depends on the installed extension, external service, or database contents.
Important Behavior and Edge Cases
It does not undo effects already committed to other services or a database.
This API is supplied by an optional extension that is not installed in the local test runtime, or requires a different PHP version. The example must be verified in a matching environment.
Comparison with Related Approaches
| Approach | Difference |
|---|---|
| AMQPChannel::rollbackTransaction | Rolls back a channel transaction's pending broker operations instead of committing them. |
| Related API or alternative | commitTransaction confirms the pending channel transaction. |
Common Beginner Mistakes
| Mistake | Correct approach |
|---|---|
| Ignoring the operation-specific limits | It does not undo effects already committed to other services or a database. |
| Confusing it with a related API | commitTransaction confirms the pending channel transaction. |
Key Takeaways
- Rolls back a channel transaction's pending broker operations instead of committing them.
- It does not undo effects already committed to other services or a database.
- commitTransaction confirms the pending channel transaction.
Use AMQPChannel::rollbackTransaction when its documented behavior matches the problem. Test the relevant edge cases in your own runtime before deploying it.