asmblah / php-amqp-compat
v0.4.13
2024-07-18 06:45 UTC
Requires
- php: >=8.1
- ext-sockets: *
- nytris/nytris: ^0.1
- php-amqplib/php-amqplib: v3.5.4
- psr/log: ^1|^2|^3
Requires (Dev)
- asmblah/php-code-shift: ^0.1.0
- mockery/mockery: ^1.6
- phpstan/phpstan: ^1.10
- phpstan/phpstan-mockery: ^1.1
- phpunit/phpunit: ^10.2
- tasque/event-loop: ^0.1
- tasque/tasque: ^0.1
Provides
- ext-amqp: *
README
php-amqp/ext-amqp 使用 php-amqplib 实现兼容。
为什么?
php-amqp
/librabbitmq
不完全支持 AMQP 心跳,它们仅在 调用扩展的阻塞操作期间 支持。
心跳发送者
使用 php-amqplib
,我们可以更频繁地以多种方式发送心跳
- 使用带有 ReactPHP EventLoop 的 Envoylope EventLoop(推荐)。
- 使用 UNIX System V 信号 和 Envoylope ext-pcntl。
有关安装的说明,请参阅上述软件包的使用说明。
用法
首先,删除 ext-amqp
- 它不能与该兼容层同时使用。通常,这将是与 PECL 一起。
$ pecl uninstall amqp
这是因为全局/根命名空间中安装的类,如
AMQPConnection
,将发生冲突。
其次,使用 Composer 安装此软件包
$ composer require asmblah/php-amqp-compat
最后,如果需要,安装相关的 心跳发送者。
这应该是所需的所有更改 - 此用户库被设计为即插即用。
限制
- 持久连接无法从用户空间支持。
- 如果现有逻辑通过
extension_loaded('amqp')
检查amqp
扩展,则它将失败,因为此库没有定义扩展。在功能测试期间,使用 PHP Code Shift 将extension_loaded(...)
钩子,以便从参考实现 php-amqp/ext-amqp 运行测试,请参阅 ReferenceImplementationTest。
另请参阅
- 此兼容层所取代的原始 php-amqp 扩展:php-amqp/ext-amqp。
- 此库底层使用的
php-amqplib
:php-amqplib。