crutch/consumer

消费者接口

v1.0.0 2023-01-19 11:56 UTC

This package is not auto-updated.

Last update: 2024-09-12 23:26:08 UTC


README

注意:这不是一个独立的消费者实现。它仅仅是对消费者组件的抽象描述。

可安装的实现已在Packagist上列出。

您可以使用\Crutch\Consumer\Consumers\RouteConsumer按主题分割消费者

<?php

/** @var Crutch\Consumer\Consumer $defaultConsumer */
/** @var Crutch\Consumer\Consumer $topicOneConsumer */
/** @var Crutch\Consumer\Consumer $topicTwoConsumer */
/** @var Crutch\Consumer\ConsumerHandler $handler */

$consumer = new Crutch\Consumer\Consumers\RouteConsumer($defaultConsumer);
$consumer->setConsumer('one', $topicOneConsumer);
$consumer->setConsumer('two', $topicTwoConsumer);

$consumer->consume('one', $handler); // consumed by $topicOneConsumer
$consumer->consume('two', $handler); // consumed by $topicTwoConsumer
$consumer->consume('three', $handler); // consumed by $defaultConsumer

您可以使用\Crutch\Consumer\Handlers\RouteHandler按主题分割处理器

<?php

/** @var Crutch\Consumer\ConsumerHandler $defaultHandler */
/** @var Crutch\Consumer\ConsumerHandler $topicOneHandler */
/** @var Crutch\Consumer\ConsumerHandler $topicTwoHandler */

$handler = new Crutch\Consumer\Handlers\RouteHandler($defaultHandler);
$handler->setHandler('one', $topicOneHandler);
$handler->setHandler('two', $topicTwoHandler);

$handler->handle('message 1', 'one'); // handled by $topicOneHandler
$handler->handle('message 2', 'two'); // handled by $topicTwoHandler
$handler->handle('message 3', 'three'); // handled by $defaultHandler