arthurhoaro/simple-php-messaging-service

SimplePMS 是一个使用 SQLite、PostgreSQL 或 MySQL 作为数据库后端的 PHP 消息服务

dev-master 2016-05-08 12:51 UTC

This package is auto-updated.

Last update: 2024-09-10 22:24:30 UTC


README

Build Status Coverage Status

SimplePMS 是一个非常简单的具有数据库后端的消息服务组件。

它允许应用程序在没有重型传统客户端-服务器架构的情况下进行通信。这是一种管理异步、可能长时间运行的 PHP 任务(如 API 请求、数据库导出/导入操作、发送电子邮件、支付通知处理程序、生成源等)的方法。

本项目基于 php-queue-manager,但我想我的消息只能是消息。因此,在 SimplePMS 中,消息不是任务,也不期望携带业务代码。

SimplePMS 可以以最小的努力集成到任何基于 PHP 的应用程序中,因为它不依赖于任何框架。PDO 扩展是唯一的要求。

如果您需要一个功能更全面的消息服务 - 例如,多个工作进程消费同一队列 - 考虑使用像 JMS、ActiveMQ、RabbitMQ、IronMQ 等强大消息服务/队列管理器;尽管它需要更复杂的设置。

要求

  • PHP >5.5
  • PDO
  • 数据库后端(sqlite、PostgreSQL、MySQL)

功能

  • 通过数据库实现异步消息服务。
  • 发送任何类型的数据。
  • 多个队列。
  • 处理停滞消息的超时系统。
  • 所有操作都记录在数据库中。

使用 Composer 安装

  • 安装依赖项
{
    "require": {
        "arthurhoaro/simple-php-messaging-service": "dev-master"
    }
}
  • 使用 extra/ 中可用的方案之一创建您的数据库结构。

使用示例

// Your software send a message to a worker
$message = new Anything('param');
$pms = new SimplePMS();
$pms->setPdo($pdoInstance);
$pms->send($message, 'my_queue');

// The worker reads the queue
$message = $pms->reveive('my_queue');
try {
    $message->doAnything();
    $pms->deleteMessage($message);
} catch (\Exception $e) {
    $pms->log('Can not do anything. '. $e->getMessage());
}