Thesis Amqp 1.0.0
Многие заметили, что в проекте Thesis уже несколько месяцев подряд происходит какая-то движуха. Если вкратце, мы с Вадимом решили под этим именем выпустить набор современных асинхронных компонентов для PHP, а в будущем, вероятно, и свой фреймворк.
Основной фокус на ближайшее время — реализация недостающих в экосистеме неблокирующих драйверов для эффективного взаимодействия с инфраструктурой (в планах NATS, Kafka, gRPC, Cassandra, YDB).
Сегодня мы рады анонсировать стабильный, готовый к продакшну релиз пакета thesis/amqp:
• под капотом файберы и AMPHP 3, так что клиент можно использовать как в асинхронных, так и синхронных рантаймах,
• API для работы с подтверждениями в режиме publisher confirms,
• API для работы с возвратами при отправке сообщений с флагом mandatory,
• API итераторов для упрощённого чтения сообщений из очереди,
• API публикации и получения сообщений эффективными батчами (меньше вызовов, потенциально умещаем несколько фреймов в 1 TCP-пакет),
• встроенная поддержка RPC,
• гибкая конфигурация и хорошо типизированный код.
$client = new Client(Config::default());
$channel = $client->channel();
$channel->confirmSelect();
$confirmation = $channel->publishBatch([
new PublishMessage(
message: new Message(
body: 'Hello!',
deliveryMode: DeliveryMode::Persistent,
timestamp: new DateTimeImmutable(),
),
exchange: 'x',
routingKey: 'y',
mandatory: true,
),
// ...
]);
$result = $confirmation->await();
foreach ($result->unconfirmed as $unconfirmedMessage) {
// ...
}
foreach ($result->unrouted as $unroutedMessage) {
// ...
}
Мы сделали чат Thesis Community, где вы можете задавать вопросы, делиться идеями и предлагать улучшения.
У нас к вам две просьбы:
⭐️ поставить звезду thesis/amqp,
👩🎨 помочь с логотипом для проекта Thesis — лучший скетч (можно использовать ИИ) мы отдадим дизайнеру на отрисовку, а автору подарим слоника Пых.