t4web / queue
ZF2 Module. Message broker software implementation
0.1.0
2016-06-22 15:19 UTC
Requires
- php: ^5.5 || ^7.0
- react/socket: ~0.4.2
- symfony/process: ~3.1.0
- t4web/admin: dev-master
- t4web/crud: dev-master
- t4web/domain-module: ~1.2.0
- t4web/infrastructure: ~1.2.0
- zendframework/zend-console: ~2.5.0
- zendframework/zend-db: ~2.5.0
- zendframework/zend-json: ~2.5.0
- zendframework/zend-mvc: ~2.5.0
- zendframework/zend-servicemanager: ~2.5.0
Requires (Dev)
- phpunit/phpunit: ^4.8
- squizlabs/php_codesniffer: ^2.3
This package is auto-updated.
Last update: 2024-10-26 18:01:21 UTC
README
ZF2 Module. Message broker software implementation
Introduction
Contain parts:
Server
- get messages from queue and run workers, monitor running workers countProducer
- produces messages and sends them to the queueWorker
- you background jobStorage
- messages storage
Workflow
- Client tell
Producer
what it want to process Producer
create message and put it inStorage
and get Message Id. After this push Server to process message by IdServer
check Workers count (if too much workers are running, wait) and runWorker
with Message Id.Worker
- get message from storage and process it.
Server
message / \ run worker
Client -> Producer ---------> -------------> Worker
\ /
Storage --->-
In the box we provide 2 Servers:
- Realtime server - uses ReactPHP to run a non-blocking server that accepts messages via a socket and executes them in a background process.
- Interval server - check storage for Messages by interval (run by cronjob)
Configuring
Just add in you config:
't4web-queue' => [ 'realtime-server' => [ 'enabled' => true, 'hostname' => 'localhost', 'port' => 4000, ], 'queues' => [ // Queue name 'test-engine' => [ // Handler class 'handler' => EchoWorker::class, // count workers, optional, default 1 'worker-count' => 1, // You can limit the amount of time a process takes to complete by setting a timeout (in seconds) // optional, default 300 'timeout' => 300, // optional, default 0 'debug-enable' => 1, ], ], ];
Runing
$ php public/index.php queue realtime-server