Welcome to the RabbitStream documentation! RabbitStream is a PHP library implementing the RabbitMQ Streams Protocol client (port 5552). Its Composer runtime dependencies are psr/log ^3.0 and the ext-mbstring PHP extension; ext-sockets is only a development dependency for tests.
- Installation - Install RabbitStream via Composer
- Quick Start - Get up and running in minutes
- Requirements - System and PHP requirements
- Configuration - Configuration options and best practices
- Architecture Overview - Understanding the library structure
- Connection Lifecycle - Managing connections to RabbitMQ
- Publishing - Sending messages to streams
- Consuming - Receiving messages from streams
- Stream Management - Creating and managing streams
- Super Streams - Working with partitioned streams
- Offset Tracking - Managing message offsets
- Error Handling - Handling errors and failures
- Flow Control - Managing backpressure and flow control
- Connection - StreamConnection class reference
- Producer - Publishing messages
- Consumer - Consuming messages
- SuperStreamProducer - Publishing to super stream partitions
- SuperStreamConsumer - Consuming from every super stream partition
- Message - Message structure and handling
- StreamConnection - Low-level connection management
- WriteBuffer - Binary serialization for requests
- ReadBuffer - Binary deserialization for responses
- ResponseBuilder - Response parsing and dispatch
- Enums - Protocol enums and constants
- Value Objects - Data transfer objects
- Overview - Introduction to the RabbitMQ Streams Protocol
- Frame Structure - Understanding protocol frames
- Connection & Authentication - Handshake and authentication
- Publishing Commands - Protocol commands for publishing
- Consuming Commands - Protocol commands for consuming
- Stream Management Commands - Stream administration
- Routing Commands - Super stream routing
- Connection Management Commands - Heartbeats and metadata
- Server Push Frames - Asynchronous server messages
- Basic Producer - Simple message publishing
- Basic Consumer - Simple message consumption
- Consumer Auto-Commit - Automatic offset management
- Stream Management - Creating and deleting streams
- Named Producer Deduplication - Message deduplication
- Offset Resume - Resuming from a specific offset
- Super Stream Routing - Working with partitioned streams
- Low-Level Protocol - Direct protocol usage
- Error Handling Patterns - Common error scenarios
- Binary Serialization - Understanding the binary protocol
- Custom Serializer - Implementing custom serialization
- AMQP Message Decoding - Working with AMQP 1.0 messages
- Osiris Chunk Format - Internal storage format
- PSR Logging - Integrating with PSR-3 loggers
- Performance Tuning - Optimizing for high throughput
- Development Setup - Setting up the development environment
- Testing - Running tests and writing new ones
- Adding Protocol Commands - Extending the protocol implementation
- Code Style - Coding standards and conventions
This documentation is available in multiple languages. See LANGUAGES.md for a list of available translations and information on how to contribute translations.
- GitHub Repository: https://github.com/crazy-goat/rabbit-stream
- Packagist: https://packagist.org/packages/crazy-goat/rabbit-stream
- RabbitMQ Streams Protocol Spec: https://github.com/rabbitmq/rabbitmq-server/blob/main/deps/rabbitmq_stream/docs/PROTOCOL.adoc
- Issue Tracker: https://github.com/crazy-goat/rabbit-stream/issues
If you encounter issues or have questions:
- Check the examples for common use cases
- Review the API reference for detailed class documentation
- Search existing GitHub issues
- Create a new issue with a detailed description
RabbitStream is open-source software licensed under the MIT License.