queue-interop / queue-interop
促进消息队列对象之间的互操作性。基于Java JMS
1.0.0-alpha2
2018-11-22 17:53 UTC
Requires
- php: ^7.1.3
Requires (Dev)
- phpunit/phpunit: ^5.5
- queue-interop/queue-spec: ^0.6@dev
This package is auto-updated.
Last update: 2024-09-21 21:52:14 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 interop
存在AMQP interop,它基于Queue Interop构建。它与queue interop完全兼容,并仅添加了一些AMQP特定功能
- Queue\Exchange 声明
- Queue\Exchange 绑定。
- 基本消费支持。
- 以及其他AMQP特定功能。
兼容的项目
工作流程
欢迎每个人加入并贡献。
我们尝试通过创建新接口而不是编辑现有接口来避免破坏BC。
虽然我们目前专注于接口开发,但我们对于任何可能有助于互操作性的东西都持开放态度,无论是代码、最佳实践等。