ayman-mahgoub/chinchilla

Chinchilla 是 Php-amqplib 库包装器和 AMQP 工具

dev-master 2020-02-01 20:57 UTC

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 了解我们的行为准则和提交拉取请求的流程。

作者

许可

  • 本项目采用 MIT 许可证 - 有关详细信息,请参阅 LICENSE.md 文件。

致谢