Download the PHP package componenta/cqrs-transport-cycle without Composer

On this page you can find all versions of the php package componenta/cqrs-transport-cycle. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package cqrs-transport-cycle

Componenta CQRS Transport Cycle

Cycle Database transport implementation for componenta/cqrs-transport v5. main is the adapter v2 line.

The package provides Componenta\CQRS\Command\Transport\DatabaseTransport. The application is responsible for creating the transport tables described on that class and registering the instance in TransportRegistryInterface.

Envelope persistence

The database adapter persists the complete transport envelope boundary:

These values participate in idempotency and receipt binding. The MySQL reference schema therefore stores queue/identity strings with binary comparison semantics and stores opaque wire payloads as LONGBLOB. A case-insensitive text collation is not sufficient: SQL equality must mean byte equality for these fields.

The operation context is produced by OperationContextSerializerInterface in componenta/cqrs-transport. The database adapter treats it as opaque data and binds it to the same operation ID as the command payload.

The live table must enforce a unique (queue, operation_id) key. Completed and failed rows are retained as tombstones, so repeating an uncertain send() does not create another queue entry. Reusing an operation ID with a different command class, command payload, or operation context is rejected. If tombstones are cleaned up, choose a retention period longer than the maximum producer retry window.

v2 schema migration

Existing non-empty transport tables must be migrated before deploying this adapter. Do not add a NOT NULL context column in one step unless the database explicitly supplies a safe value for existing rows.

For the MySQL-oriented reference schema, first add and backfill operation context:

Then convert all fields used for exact transport identity to binary comparison/storage and make context non-null:

{} is the serialized empty operation context and is the correct backfill for messages created before operation-context propagation. Adapt the DDL syntax for other databases while preserving byte-exact equality, the unique (queue, operation_id) invariant, and non-null context after backfill.

The full reference schema is documented on DatabaseTransport.

Delivery and consistency

Each delivery has an opaque lease-token receipt. ack() and reject() only change the row while that token still owns the lease; a worker whose lease was reclaimed cannot dispose another worker's delivery. The receipt is additionally bound to queue, operation ID, command class, command payload, and operation context.

All queue consistency reads use the Cycle write driver, including post-send read-back, claim candidate selection, and idempotent disposition checks. They intentionally do not use Database::select(), because Cycle routes that API through the optional read driver and a lagging replica cannot provide the read-your-write/lease consistency required by a queue.

All queue timestamps and redelivery cutoffs are derived from CURRENT_TIMESTAMP on the write driver. Producer and worker host clocks therefore do not participate in delayed availability, lease age, completion, or failure decisions. The write database/session timezone should remain stable; Cycle drivers use UTC by default.

redeliverTimeout is the maximum expected uninterrupted processing duration, not a heartbeat interval. The transport cannot renew a lease while a synchronous PHP handler is running. Configure it above the longest handler duration; after the timeout another worker may execute the same command concurrently. Handlers must therefore remain idempotent.

A caught worker failure is rejected into the failed table and is not visibility-redelivered. Use retry middleware around command execution or an explicit failed-message retry workflow when execution retries are required.


All versions of cqrs-transport-cycle with dependencies

PHP Build Version
Package Version
Requires php Version >=8.4
componenta/cqrs-transport Version ^1.0 || ^2.0 || ^3.0.1
cycle/database Version ^2.21
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package componenta/cqrs-transport-cycle contains the following files

Loading the files please wait ...