zoon / queue-interop
促进MQ对象互操作性。基于Java JMS,并使用psalm类型提示进行现代化。
1.0.0
2024-03-13 13:27 UTC
Requires
- php: ^7.1.3 || ^8.0
Requires (Dev)
- phpunit/phpunit: ^5.5 || ^6.0 || ^7.0 || ^8.0 || ^9.0
- queue-interop/queue-spec: ^0.6@dev
- vimeo/psalm: ^4.7
This package is auto-updated.
Last update: 2024-09-14 10:29:46 UTC
README
关于
queue-interop 尝试确定和标准化PHP程序创建、发送、接收和读取MQ消息的通用方式,以实现互操作性。
通过讨论和试验,我们试图创建一个标准,它由通用接口和建议组成。
如果提供队列实现的PHP项目开始采用这些通用标准,那么使用MQ的PHP应用程序和项目可以依赖这些通用接口,而不是特定的实现。这促进了高度的互操作性和灵活性,使用户可以消费任何可以适应这些接口的MQ传输实现。
本项目的工作没有得到PHP-FIG的官方认可。我们遵循PHP-FIG的精神和理念。
安装
您可以通过Composer安装此包
# Install a Queue Interop compatible transport, for example
$ composer require enqueue/fs
示例
发送消息
<?php use Enqueue\Fs\FsConnectionFactory; $context = (new FsConnectionFactory())->createContext(); $context->createProducer()->send( $context->createQueue('aQueue'), $context->createMessage('aBody') );
消费消息
<?php use Enqueue\Fs\FsConnectionFactory; $context = (new FsConnectionFactory())->createContext(); $consumer = $context->createConsumer($context->createQueue('aQueue')); $timeout = 5000; // 5sec if ($message = $consumer->receive($timeout)) { // process the message. $consumer->acknowledge($message); }
了解更多信息
- Enqueue传输文档包含大量使用示例。
- Formapro的博客包含有关Queue Interop使用的各种博客文章。
- RabbitMQ的官方教程已移植到AMQP Interop。
兼容项目
项目
- Enqueue
- Swarrot
- Bernard
- vladimir-yuldashev/laravel-queue-rabbitmq
- sonata-project/notification-bundle
- yiisoft/yii2-queue
- queue-interop/ext - 将Queue Interop作为PHP扩展。对于Phalcon开发者很有用。
实现
- enqueue/amqp-ext
- enqueue/amqp-lib
- enqueue/amqp-bunny
- makasim/rabbitmq-cli-consumer-client
- enqueue/pheanstalk
- enqueue/stomp
- Amazon SQS enqueue/sqs
- Amazon SNS enqueue/sns
- Amazon SNS\SQS enqueue/sns
- Google PubSub enqueue/gps
- enqueue/rdkafka
- enqueue/redis
- enqueue/mongodb
- enqueue/gearman
- enqueue/dbal
- enqueue/fs
- enqueue/null
- enqueue/wamp
- makasim/php-fpm-queue
- assoconnect/enqueue-azure
AMQP互操作
在Queue Interop之上构建了AMQP互操作。它与Queue Interop完全兼容,仅添加了一些AMQP特定功能。
- Queue\Exchange声明
- Queue\Exchange绑定。
- 基本消费支持。
- 以及其他AMQP特定功能。
兼容项目
工作流程
欢迎 everyone 参与 和 贡献。
我们试图通过创建新接口而不是编辑现有接口来避免破坏BC。
当我们目前正在处理接口时,我们对任何可能有助于互操作性的事物持开放态度,无论是代码、最佳实践等。