ayman-mahgoub / chinchilla
Chinchilla 是 Php-amqplib 库包装器和 AMQP 工具
dev-master
2020-02-01 20:57 UTC
Requires
- php: ^5.3.3|^7.0
- php-amqplib/php-amqplib: ^2.11
Requires (Dev)
- phpunit/phpunit: ^7
This package is auto-updated.
Last update: 2024-09-29 05:29:42 UTC
README
- Chinchilla 是 Php-amqplib 库包装器和 AMQP 工具,适用于原生 PHP 应用程序。
关于
- 我们构建 Chinchilla 以便于原生 PHP 应用程序通过 Php-amqplib 以更简单的方式使用消息传递。
安装
- 通过 Composer
$ composer require ayman-mahgoub/chinchilla
入门
- 首先在您的项目目录中创建 config.php 文件,您必须声明这些常量
define("AMQP_HOST", "localhost");
define("AMQP_PORT", 5670);
define("AMQP_USERNAME", "rabbitmq");
define("AMQP_PASSWORD", "rabbitmq");
define("AMQP_VHOST", "/");
define("AMQP_LOGIN_METHOD", 'AMQPLAIN');
define("AMQP_LOCAL", 'en_US');
define("AMQP_CONNECTION_TIMEOUT", 120);
define("AMQP_READ_WRITE_TIMEOUT", 120);
define("AMQP_KEEP_ALIVE", true);
define("AMQP_HEART_BEAT", 60);
define("AMQP_CONTEXT", true);
define("AMQP_CHANNEL_RPC_TIMEOUT", 0.0);
define("AMQP_SSL_PROTOCOL", 0.0);
define("AMQP_INSIST", false);
define("AMQP_LOGIN_RESPONSE", null);
define("AMQP_QUEUES", "queues.json"); // full path for your .json queues file.
- 创建您的 queues.json 文件(您可以根据需要命名,现在我们假设您将其命名为 queue.json)。
- 这是您的 queues.json 的结构
{
"consumers":{
"first_queue_name":{
"connection":"socket",
"consumer":"FullPathCallBackClass"
},
"second_queue_name":{
"connection":"socket",
"consumer":"FullPathCallBackClass"
}
},
"producers":{
"first_queue_name":{
"connection":"socket",
"properties":{
"type":"direct",
"delivery_mode":2
}
}
}
}
- 示例
{
"consumers":{
"upload_picture":{
"connection":"socket",
"callback":"Chinchilla\Consumer\Services\ConsumerAny"
}
},
"producers":{
"upload_picture":{
"connection":"socket",
"properties":{
"type":"direct",
"delivery_mode":2
}
}
}
}
-
现在您已经准备好使用 chinchilla 了 ;)。
-
使用 QueuePublisher 通过传递消息和路由键将任何消息发布到任何队列
-
示例
$queuePublisher = new QueuePublisher();
$queuePublisher->publish("my first message", "upload_picture");
- 使用 ConsumeQueueMessageService 通过队列名称和消息数量从所需的任何队列中消费任何数量的消息。
- 示例
$consumeQueueMessageService = new ConsumeQueueMessageService();
$consumeQueueMessageService->consumeMessageFormQueue("upload_picture", 5);
- 使用 QueueDeletionService 通过仅传递队列名称来删除任何队列。
- 示例
$queueDeletionService = new QueueDeletionService();
$queueDeletionService->partialDeleteQueue("upload_picture");
// partialDeleteQueue will delete queue form AMQP broker only
$queueDeletionService = new QueueDeletionService();
$queueDeletionService->fullDeleteQueue("upload_picture");
// fullDeleteQueue method will delete queue form AMQP broker and from queues.json too.
运行测试
$ composer test
请注意
- 我们很清楚这个库还不够完美,因此我们欢迎任何贡献。
- 目前,路由键必须等于队列名称。
- 目前我们只支持套接字连接,未来将实现更多连接类型,我们将会更新 README。
- 目前测试仅测试连接,我们将在未来添加更多测试。
贡献
- 请阅读 CONTRIBUTING.md 了解我们的行为准则和提交拉取请求的流程。
作者
-
Ayman Mahgoub - 初始工作 - aymanMahgoub
-
有关参与此项目的 贡献者 列表。
许可
- 本项目采用 MIT 许可证 - 有关详细信息,请参阅 LICENSE.md 文件。
致谢
- 灵感来自 Thumper 和 RabbitMqBundle。
- 大量帮助编写此 README.md README.md 模板。