eqs / health-check-provider
提供符合IETF健康检查草稿RFC的健康检查端点
0.1.1
2024-01-26 08:53 UTC
Requires
- php: ^8.1
- psr/clock: ^1.0
- psr/http-client: ^1.0
- psr/http-factory: ^1.0
- psr/http-server-handler: ^1.0
Requires (Dev)
- doctrine/dbal: ^3.7
- ramsey/devtools: ^2.0
- spatie/phpunit-snapshot-assertions: ^5.1
- symfony/browser-kit: ^7.0
- symfony/clock: ^7.0
- symfony/framework-bundle: ^7.0
- symfony/psr-http-message-bridge: ^7.0
This package is auto-updated.
Last update: 2024-09-01 04:29:40 UTC
README
提供符合IETF健康检查草稿RFC的健康检查端点结构
关于
本软件包提供的端点符合IETF健康检查RFC草稿06版本。
集成
我们提供以下集成,但通过重用CallableHealthChecker实现自己的集成非常简单。
- HTTP请求
- Doctrine连接
安装
使用Composer将此软件包作为依赖项安装。
composer require eqs/health-check-provider
使用方法
此库提供PSR-15 HTTP服务器请求处理器,这保证了与广泛PHP框架的兼容性。如果您的框架原生不支持它,您可以找到一个支持它的PSR桥接器。
Symfony框架示例控制器
对于此示例,除了标准的symfony软件包外,您还需要php-http/discovery
和symfony/psr-http-message-bridge
软件包。
use Doctrine\DBAL\Connection; use GuzzleHttp\Psr7\HttpFactory; use EQS\HealthCheckProvider\DTO\CheckDetails; use EQS\HealthCheckProvider\DTO\HealthResponse; use EQS\HealthCheckProvider\HealthChecker\CallableHealthChecker; use EQS\HealthCheckProvider\HealthChecker\DoctrineConnectionHealthChecker; use EQS\HealthCheckProvider\HealthChecker\HttpHealthChecker; use EQS\HealthCheckProvider\RequestHandler; use Psr\Http\Client\ClientInterface; use Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory; use Symfony\Bridge\PsrHttpMessage\Factory\PsrHttpFactory; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\DependencyInjection\Attribute\Autowire; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Messenger\Transport\Receiver\MessageCountAwareInterface; use Symfony\Component\Messenger\Transport\TransportInterface; use Symfony\Component\Routing\Annotation\Route; class GetHealthCheckController extends AbstractController { public function __construct( #[Autowire(service: 'messenger.transport.amqp_dc_user_update')] private MessageCountAwareInterface&TransportInterface $transport, private Connection $connection, private ClientInterface $httpClient, ) {} #[Route(path: '/api/health_check')] public function __invoke(Request $request): Response { $psr17Factory = new HttpFactory(); $psrBridge = new HttpFoundationFactory(); return $psrBridge->createResponse( (new RequestHandler( new HealthResponse(), [ new CallableHealthChecker(new CheckDetails('AMQP', true), fn () => $this->transport->getMessageCount()), new DoctrineConnectionHealthChecker(new CheckDetails('Database', true), $this->connection), new HttpHealthChecker( new CheckDetails('External API', false), $this->httpClient, new \GuzzleHttp\Psr7\Request('GET', 'https://www.google.com'), ), ], $psr17Factory, $psr17Factory, )) ->handle((new PsrHttpFactory($psr17Factory, $psr17Factory, $psr17Factory, $psr17Factory)) ->createRequest($request)), ); } }
贡献
欢迎贡献!要贡献,请熟悉CONTRIBUTING.md。
版权和许可
eqs/health-check-provider版权© EQS Group,根据MIT许可证(MIT)许可使用。有关更多信息,请参阅LICENSE。