https://github.com/inteve/message-queue
Simple message queue
https://github.com/inteve/message-queue
Last synced: 4 months ago
JSON representation
Simple message queue
- Host: GitHub
- URL: https://github.com/inteve/message-queue
- Owner: inteve
- License: other
- Created: 2023-11-02T11:15:55.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2023-11-02T14:10:54.000Z (about 2 years ago)
- Last Synced: 2025-01-13T08:12:24.309Z (12 months ago)
- Language: PHP
- Homepage:
- Size: 15.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- Funding: .github/funding.yml
- License: license.md
Awesome Lists containing this project
README
# Inteve\MessageQueue
[](https://github.com/inteve/message-queue/actions)
[](https://packagist.org/packages/inteve/message-queue)
[](https://github.com/inteve/message-queue/releases)
[](https://github.com/inteve/message-queue/blob/master/license.md)
Simple message queue
## Installation
[Download a latest package](https://github.com/inteve/message-queue/releases) or use [Composer](http://getcomposer.org/):
```
composer require inteve/message-queue
```
Inteve\MessageQueue requires PHP 8.0 or later.
## Usage
``` php
$exceptionHandler = function (\Throwable $e) {
\Tracy\Debugger::log($e, \Tracy\Debugger::EXCEPTION);
};
$dateTimeFactory = new MyDateTimeFactory; // implementation of Phig\DateTimeFactory
$adapter = new MemoryAdapter($exceptionHandler);
$manager = new Manager($adapter, $dateTimeFactory);
```
### Insert message
``` php
$manager->create(
queue: 'name-of-queue',
data: [
'field' => 'value',
'field2' => 'value2',
]
);
```
### Consume message
Process message from given queue:
``` php
$manager->fetch(
queue: 'name-of-queue',
handler: function (array $data) {
$data['field'];
$data['field2'];
}
);
```
Process messages from ALL queues (logs missing handlers via `$exceptionHandler`):
``` php
$message = $manager->multiFetch(
handlers: [
'name-of-queue' => function (array $data) {
$data['field'];
$data['field2'];
}
'name-of-queue-B' => function (array $data) {
$data['field'];
$data['field2'];
}
],
limit: 10 // number of messages processed in multiFetch() call
);
```
Process messages from SPECIFIC queues:
``` php
$message = $manager->multiFetch(
handlers: [
'name-of-queue' => function (array $data) {
$data['field'];
$data['field2'];
}
'name-of-queue-B' => function (array $data) {
$data['field'];
$data['field2'];
}
],
limit: 10, // number of messages processed in multiFetch() call
fetchFrom: $mananger::FROM_LISTED_ONLY
);
```
------------------------------
License: [New BSD License](license.md)
Author: Jan Pecha, https://www.janpecha.cz/