Releases: nimbly/Syndicate
Releases · nimbly/Syndicate
Release 2.1
Updates
- You can now pass in a file name to the
JsonSchemaValidatorconstructor when mapping schemas. - Adding test coverage for PHP 8.4
- Upgrading to Psalm 6
- Moving to PHPUnit's
#[CoversClass]attribute in tests instead of legacy@covers. - Adding attribute flag on
Consumeto only allow it on methods. JsonSchemaValidatorwill first check if the message has already been parsed instead of always JSON decoding the message payload.
Fixes
- Fixed issue where handler classes were not being autowired with dependencies from container.
Release 2.0
Fixes
- Slight refactor of
RedisPubsubto callConsumer::current()directly within while-loop - this allowed for easier mocking in unit tests. - Adding
pcntlworkarounds forPubSub\Redisthat will correctly interrupt and shutdown when new messages arrive. Library still hard blocks while idle/waiting for new messages.
Updates
- Splitting out
Mockinto aMockQueueandMockSubscriberclasses, updating unit tests due to the namespace change. - Unifying all adapters under the
Adapternamespace. - Moved interfaces for publishers, consumers, and subscribers into
Adapternamespace. - Moved
Router,RouterInterface, andConsumeattribute under theRouternamespace. - Moved exceptions into
Exceptionnamespace. Messageclass now has aparsed_payloadproperty that can be passed into the constructor or with thesetParsePayloadmethod along with agetParsedPayloadmethod.- Reorganized and greatly expanded documentation.
- Increased code coverage.
- Some adapters have had publishing options moved into the Message attributes (Mqtt, Sns, Beanstalk, RabbitMQ). This move is a more natural fit as these options are tightly coupled to the Message itself (eg, Message ID, Group ID, QOS, etc.), and not necessarily publishing in general.
New features
- New Adapters
- Adding support for
Gearman. - Adding support for
Outbox(publish only.) - Adding support for
Mercure(publish only.) - Adding support for
NullPublisher(publish only.) - Adding support for
Segment(publish only.)
- Adding support for
- Validators: validate Messages against a schema or other rule set. Validators can be used in filters or in middleware.
- JSON Schema support added
- Middleware: Interact with messages before and after processing.
ValidateMessagemiddleware that validates all incoming (consumed) messages.DeadletterMessagemiddleware that will deadletter Subscriber based consumers.ParseJsonMessagemiddleware that will parse your JSON messages and attach parsed payload to Message.
- Filters: chain one or more filters to a publisher to add new functionality.
RedirectFilterredirects a Message to specific topic instead of the Message's topic.ValidatorFiltervalidates messages against given validator before being publishing. Throws exception if message does not validate.
Breaking changes
- All adapters have been moved under a single
Nimbly\Syndicate\Adaptersnamespace. - All exceptions have been moved to the
Nimbly\Syndicate\Exceptionsnamespace. DeadletterPublisherhas been renamed toRedirectPublisherand moved to theNimbly\Syndicate\Filternamespace.- All routing classes (
Router,Consumeattribute, andRouterInterface) have been moved to theNimbly\Syndicate\Routernamespace.
Please refer to documentation for more detailed information.
Release 1.1
Updates
- Adding support for
LoopConsumerInterfaceintegrations within the framework.
Release 1.0.1
Updates
- Removing hard requirement for
ext-pcntl - Adding additional logging if no
ext-pcntlor empty interrupt signals - Adding additional logging when graceful shutdown initiated and completed
- Making
signalsdefault to[SIGINT, SIGTERM] - Logging of message dispatch is now a
debuglevel - Upgrading dev dependencies for phpunit and psalm
- Adding better connection related exception catching in several integerations
- Cleaner documentation
Fixes
- Fixed bug with improper
sprintfformat
Release 1.0
Official 1.0 release of Syndicate.
It is a complete rewrite and rework of the framework and is not backwards compatible with beta releases (0.x).
Please refer to README.md for more information.
Release 0.8
Updates
- Adding PSR-11 Container support.
- Adding dependency resolution when dispatching to handlers.
Fixes
- MockQueue adapter will release message properly now.
Release 0.7
Fixes
- Redis
release()now re-queues the entire source message instead of the payload.
Updates
- Cleaning up message de-queuing process in all queue drivers.
- Removing
composer.lockfrom repo - should prevent any package conflicts.
Release 0.6
New features
- Queue now has
shutdown()method to exitlisten()loop. - Support for PCNTL signals in a safe and sane manner.
Fixes
- Beanstalk queue driver now provides default Beanstalk values instead of
null. - Redis driver now uses
blpop(blocking left pop) to get message.
Breaking changes
- Dispatcher no longer provides a
listenmethod. Invert the dependency and have the Queue callback call the Dispatcher instead.
$queue->listen(function(Message $message) use ($dispatcher): void {
$dispatcher->dispatch($message);
});