@@ -189,6 +189,109 @@ return [
189189 php bin/enqueue
190190```
191191
192+ ## Другие транспорты
193+
194+ ### Файловая система
195+
196+ #### Настройка
197+
198+ ` .settings.php ` Битрикса:
199+
200+ ``` php
201+ // ... предыдущее
202+
203+ 'proklung.redis' => [
204+ 'value' => [
205+ 'enqueue' => [
206+ // ... предыдущее
207+ 'filesystem' => [
208+ // $_SERVER['DOCUMENT_ROOT'] - важно!
209+ 'transport' => 'file:///' . $_SERVER['DOCUMENT_ROOT'] . '/bitrix/cache/s1/fs',
210+ 'client' => [
211+ 'default_queue' => 'default',
212+ 'prefix' => 'fs',
213+ 'app_name' => 'fedy',
214+ ],
215+ ],
216+ ]
217+ ]
218+ ],
219+ ```
220+
221+ #### Клиент
222+
223+ Класс:
224+
225+ ``` php
226+ use Interop\Queue\Message;
227+ use Interop\Queue\Context;
228+ use Interop\Queue\Processor;
229+ use Enqueue\Client\TopicSubscriberInterface;
230+
231+ class FooFsProcessor implements Processor, TopicSubscriberInterface
232+ {
233+ public function process(Message $message, Context $session)
234+ {
235+ file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/fs-bitrix.log', $message->getBody());
236+
237+ return self::ACK;
238+ }
239+
240+ public static function getSubscribedTopics()
241+ {
242+ return ['bitrix-fs'];
243+ }
244+ }
245+ ```
246+
247+ ` .settings.php ` модуля:
248+
249+ ``` php
250+ return [
251+ 'services' => [
252+ 'value' => [
253+ // ... предыдущие клиенты
254+ 'Proklung\Redis\Samples\FooFsProcessor' => [
255+ 'className' => \Proklung\Redis\Samples\FooFsProcessor::class,
256+ 'tags' => ['name' => 'enqueue.topic_subscriber', 'client' => 'filesystem']
257+ ],
258+ ],
259+ 'readonly' => false,
260+ ],
261+ ];
262+ ```
263+
264+ #### Отправка сообщений
265+
266+ ``` php
267+ $services = new Proklung\Redis\DI\Services();
268+ $container = $services->boot();
269+
270+ $producerFs = $container->get('enqueue.client.filesystem.lazy_producer');
271+ $producerFs->sendEvent('bitrix-fs', 'FS');
272+ ```
273+
274+ #### Получение сообщений
275+
276+ ``` bash
277+ php bin/enqueue enqueue:consume --client=filesystem
278+ ```
279+
280+ Где ` filesystem ` - название клиента, определяемое в ` .settings.php ` Битрикса.
281+
282+ Или так:
283+
284+ ``` php
285+ /** @var Context $context */
286+ $context = $container->get('enqueue.transport.filesystem.context');
287+
288+ $fooQueue = $context->createQueue('fs.fedy.default'); // См. .settings.php, свойства клиента.
289+ $consumer = $context->createConsumer($fooQueue);
290+ $message = $consumer->receiveNoWait(); // Для примера, чтобы скрипт не зацикливался. В нормальной среде - $consumer->receive().
291+
292+ $consumer->acknowledge($message);
293+ ```
294+
192295## Credits
193296
194297Данный модуль представляет собой адаптацию [ пакета] ( https://github.com/php-enqueue/enqueue-bundle ) для работы
0 commit comments