inteve/message-queue

简单的消息队列

支持包维护!
其他

v2.0.0 2023-11-02 14:05 UTC

This package is auto-updated.

Last update: 2024-08-31 00:33:50 UTC


README

Build Status Downloads this Month Latest Stable Version License

简单的消息队列

Donate

安装

下载最新包 下载最新包 或使用 Composer

composer require inteve/message-queue

Inteve\MessageQueue 需要 PHP 7.4.0 或更高版本。

使用

$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);

插入消息

$manager->create(
	queue: 'name-of-queue',
	data: [
		'field' => 'value',
		'field2' => 'value2',
	]
);

消费消息

从指定队列处理消息

$manager->fetch(
	queue: 'name-of-queue',
	handler: function (array $data) {
		$data['field'];
		$data['field2'];
	}
);

从所有队列处理消息(通过 $exceptionHandler 记录丢失的处理程序)

$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
);

从特定队列处理消息

$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
);

许可证: 新BSD许可证
作者: Jan Pecha, https://www.janpecha.cz/