All relevant changes to mateusjunges/laravel-kafka
will be documented here.
- Allow to customize flush settings (retries + timeout) by @sash in #317
- Allow to use other types of Keys other than strings by @mateusjunges in #322
- Prefer new Laravel 11 Cache key by @cragonnyunt in #321
- Convert
KAFKA_CONSUMER_DEFAULT_TIMEOUT
to an integer to avoid type error by @niuf416 in #230
- Add message id key name to config by @LabbeAramis in #315
- Adds in the ability to set complete body when producing messages by @sash in #316
- Introduce async publishing by @mateusjunges and @sash in #312
- Allow to reset the Kafka Manager by @mateusjunges in #314
- Do not override topic when publishing batch messages by @mateusjunges in #313
- Fix consumer middlewares not working as expected when using the
$consumer
parameter in message handlers by @sash in #304
- Attempt to fix invalid group id generation by @mateusjunges in #305
- Add int casting to getLastRestart method by @glioympas in #298
- Allow null payloads when sending the message to DLQ
- Properly shut down the producer for single messages. Improve docs for sending single and multiple messages by @mateusjunges on #283
- Replace
resolve
withapp
by @SachinBahukhandi in #280
- Mirror logic to enable fake builder set the topic name for all the messages at once by @cvairlis in #279
- Fix type error caused by wrong type on
commit
parameter by @panaiteandreisilviu on #276
- Do not require to specify message topic twice by @mateusjunges in #270
- Allow to queue message handlers by @mateusjunges in #177
- Add missing return types by @mateusjunges in #189
- Upgrade to PHP 8.1 and make code more maintainable by @mateusjunges in #161
- Allow to define before callbacks by @ebrahimradi in #192
- Add publishing/consuming events by @mateusjunges in #193
- Send throwable info to DLQ by @mateusjunges in #194
- Add the ability to use Kafka transactional producers by @mateusjunges in #223
- Partition assignment by @mateusjunges in #234
- Document subscribing to topics using regex by @mateusjunges in #239
- Passthru missing methods on
KafkaFake
for macro accessibility by @mateusjunges in [#246]#246 and (#250) - Allow to uniquely identify messages by @mateusjunges in #244
- Update CI to run without docker on Github CI by @mateusjunges in #254
- Drop support for Laravel 9 by @mateusjunges in #255
- Add support for Laravel 11 by @mateusjunges in #257
- Improve producer performance by reducing
flush
calls by @mateusjunges in #252 - Allow to test macroed consumers by @mateusjunges in #267
- Install a signal handler for SIGINT (cmd/ctrl + c) by @mateusjunges
- Fix install issues when using laravel v1.13.x by @mateusjunges
- Add timeout feature for consumers by @mihaileu in #233
- Remove internal annotation from interface by @mateusjunges
- Fixed default securityProtocol config by @SergkeiM in #215
- Make Kafka macroable by @lentex in #221
- Update package dependencies by @mateusjunges
- Update README.md to link to the 1.13 documentation page by @tavsec in #212
- Fix auto commit config by @ebrahimradi in #203
- Add the ability to change the cache driver by @BBonnet22 in #199
- Fix consumer auto commit creating wrong committer by @mateusjunges on #186
- Fix contracts marked as internal (Fixes #178)
- Drop support for older versions of
rdkafka
by @mateusjunges - Fix bug when sending message to DLQ (allow to send message key) by @ebrahimradi in #175
- Allow to send message headers to DLQ by @mateusjunges
- Allow consumers to subscribe to
SIGQUIT
andSIGTERM
signals by @mateusjunges on #172 - Add
onStopConsume
method to the Consumer class
- Add support for Laravel 10 by @mateusjunges and @mihaileu on #171
- Report consumer exceptions by @behzadev on #169
- Add Logger contract to allow users to implement their own Logger by @remarkusable in #165
- Added support for PHP 8.2 by @mateusjunges in #159
- Dropped support for
ext-rdkafka
v4.0 by @mateusjunges in #158 - Dropped support for Laravel 8 by @mateusjunges in #158
- Dropped support for PHP 8.0 by @mateusjunges in #159
- Fixes
kafka.php
config file
- Allow to configure sleep timeout when Producer is retrying
flush
by @mateusjunges in #156
- Filter config options for consumer and producers by @mateusjunges in #151
- Make Kafka class usable through interface injection by @mosharaf13 in #150
- Fixes batch message processing by @mateusjunges in #143
- Fix docs by @mateusjunges in #137
- Add methods to configure config callbacks by @mateusjunges in #136
- Allows to customize the Deserializer in
kafka:consume
Command by @cragonnyunt in #140
- Make consumer timeout configurable (fixes #132) by @mateusjunges in #134
- Resolve consumer instance using service container, by @cragonnyunt in #118
- Improved exception handling when a call to
flush
returns an error, by @mateusjunges in #112
- Message consumer Mock, by @gajosu in #107
- Add Batch Support for Message consumer Mock, by @gajosu in #109
- Added consumer contracts, by @mateusjunges in #110
- Add docs for mocking consumers, by @mateusjunges in #111
- Additional option to stop consumer after last message on topic, by @StounhandJ in #103
- Fix docker file by @gajosu in #108
- Fixes Sasl security protocol not being passed to config class. By @gajosu in #106
- Link to the current version documentation fixed by @Elnadrion in #104
- (Documentation) Added missing comas in the class params by @shanginn in #101
- Fixed Passing null to parameter #1 ($string) of type string is deprecated by @elnadrion on #100
- Fix undefined offset 0 when trying to set Dead Letter Queues without subscribing to any kafka topics (#e06849c)
- Fixed Kafka Facade docblock on #93 by @nmfzone
- Fixed Kafka Facade docblock on #93 by @nmfzone
- Fix Json Serialize to not serialize the same message twice on #92 by @lukecurtis93
- Added support for batch producing and handling batch of messages by @vsvp21 in #86
- Return callback result for published messages filter when callback is provided on #87 by @nmfzone
- Added support for Laravel 9 in the tests pipeline on #88 by @mateusjunges
- Fix Json Serialize to not serialize the same message twice on #92 by @lukecurtis93
- Use correct consumer group id config key in consumer command
- Added missing
auto.offset.reset
to the consumer only options array.
- Fixes CONFWARN on consumer on #75 (issue) with #76 (pull request)
- Fixes Sasl authentication not working #77 (issue) with #78 (pull request)
- Fixes #69
- Add support for
ext-rdkafka
v6.0
- Changed docker image used for tests to
mateusjunges/laravel
- Removed Null Serializer
- Message headers can't be null (#ea9d97f)
- Allow using sasl with lowercase config keys (#1cc7521)
- Included SASL on consumer config when applicable (#5c028bf)
- Fixed built in consumer command (#50)
- Added a
withBrokers
setter to the consumer api, allowing to set brokers on the run (#6a639ce) - Added boolean argument to
withAutoCommit
, which defaults to true (#3ffb226) - Added support for
librdkafka
v0.11.3 (#4600fdc)
- Cast
auto_commit
to string on initial consumer options (#f2a6c2b)
- Renamed
AvroencoderException
toAvroSerializerException
by @rtuin in #38 - Extend all exceptions from
LaravelKafkaException
by @rtuin in #38
- Added message context to committers plus allow to use custom committers (#133a4bb)
- Added retryable handler, allowing to retry message handling and block processing any other message. (#0f9aeee)
- Fixed composer.json dependencies. Improve installation process (#5981907)
- Allow
createConsumer
to use consumer group id from config (#559b467) - Improve consistency with serializers/deserializers naming (#b55772a)
- Added
stopConsume
method to allow consumer to be gracefully stopped (#db37381) - Reduced consumer timeout to a more realistic number, this allows signals to be caught every 2 seconds allowing graceful shutdown (#af1902f)
- Fixes exception thrown when kafka cannot complete a
flush
call. (#ddae8e3)
- Reworked testing framework to properly check what was dispatched (#ec8b3f6)
- Fixed incorrect param ordering on test (#1022799)
- Fixed KafkaFake to store published messages correctly (#4fe6e96)
- Added tests to ensure count of published messages works (#7ea370f)
- Allow using SASL with lowercase config keys. (#ca542e21)
- Fix incorrect message published count (#06c3844)
- Fixed exception thrown when kafka cannot complete a flush call (#9a1fcba)
- Fix
assertPublishedOnTimes
to allow usage of callback if the message is null. (#c5b496)
- Added
assertPublishedTimes
andassertPublishedOnTimes
methods (#a16a10d)
- Make topic name optional. Add method to set topic name when using fake driver (#12dde5, #8f5b25, #f3c8b43, #fe19922)
- Make broker parameter optional (#5625bef, #aa5596c, #c6ad0e9, #5117cd8)
- Allow getTopicName to return null on KafkaMessage contract (#3e6289d)
- Make topicName optional on Message::create() (#7213af9)
- Fix
publishOn
andcreateConsumer
method signatures on kafka facade (#eb66e8e) - Make message argument optional for
assertPublished
andassertPublishedOn
methods (#9ec5eea)
- Added the security protocol to Sasl class. By default, its used
SASL_PLAINTEXT
(#f4e62d2) - Allow usage of SASL with Kafka producers (#04686cc)
- Allow both
SASL_PLAINTEXT
andSASL_SSL
security protocols with sasl. (#49e1112)
- Allow usage of custom options for producer config (#38ca04)
- Added validation to ensure a kafka consumer will not subscribe to a topic if it is already subscribed. (#f1ab25c)
- Make
$topics
parameter optional onKafka::createConsumer
method. (#ef7a1a8)
- Fixed documentation about message handlers (#c375e10)
- Fixed tests to test a message can be consumed using message handlers
- Added option to use custom serializers/deserializers with Kafka(#5)
- Added default AVRO, Json and Null serializers/deserializers (#5)
- Message handlers now receives a
Junges\Kafka\Contracts\KafkaConsumerMessage
instance, instead ofRdKafka\Message
directly.
Junges\Kafka\Message
class namespace changed toJunges\Kafka\Message\Message
- Method
withMessageKey
renamed towithBodyKey
, onJunges\Kafka\Message\Message
andJunges\Kafka\Producers\ProducerBuilder
classes. (b41c310)
- Add documentation to the config file
- Add tag to publish config file
- Fix documentation typos #2
- Fix installation docs
- Fixed argument for
assertPublished
, used to perform assertions over published messages - Add testing documentation
- Initial release