Releases: heetch/felice
v2.2.0
This release adds a minimal implementation of the MurmurHash2 hashing algorithm that's used for JVM Kafka client compatible partitioning and in turn removes a dependency that was previously used for this. This enables apps that use felice
to upgrade to newer versions of github.com/Shopify/sarama
without compile time errors in a transitive dependency. See #67 for more details.
v2.1.0
- Modify Discarded function to be explicit on what to do in case of discarding the message #66
This is backwards incompatible change but it just requires this change:
- config.Discarded = func(msg *sarama.ConsumerMessage, err error) {
- ... discarded stuff
- }
+ config.Discarded = func(ctx context.Context, msg *sarama.ConsumerMessage, err error) bool {
+ ... discarded stuff
+ return true
+ }
v2.0.0
new API
This major-version update simplifies the Felice API significantly.
It is not a backwardly compatible change.
It removes retry, logging and metrics logic from the package entirely,
leaving it up to the caller to manage those for itself.
It also adds a context.Context
argument to the HandleMessage
method
signature. This is so that a long-running handler (for example one that's
spending time retrying) can know when to stop. See #52 for more details.
It also updates to use the latest version of Sarama, which provides consumer-group
support, so there's no need to use the external sarama-cluster
package.
Issues #28, #28 and #35 are now redundant and will be closed.
add SendMessages method
This release targets the sendmessages-v0.4.0 feature branch which adds bulk message sending support without breaking the existing released API.
It adds a SendMessages
method to send multiple messages concurrently more efficiently than sending them individually.
v0.3.0
Version 0.2.0
New features
MessageConverter
Felice provides a generic way of defining messages that is not tied to the way this message is sent to Kafka. In Felice, a message contains a body and may contain a key and headers.
The way this information is sent to Kafka is a function of the MessageConverter used. Some MessageConverter could decide to send headers using the Kafka headers feature and encode the body using JSON, whilst another might want to wrap the headers and body, into an Avro message and send everything as the Kafka value.
This allows decoupling of business logic from the convention used to format messages so it is easy to change the format without changing too much code.
Config
Producer and Consumer package now require passing a config value. Config contains Felice specific configuration as well as Sarama and Sarama-Cluster configuration, so users can customize the behaviour of producers and consumers.
Codec
Felice provides now a codec package containing utility types that will ease key and body encoding.
Version 0.1.0
Felice 0.1.0
What is Felice?
Felice is an opinionated library for producing and consuming messages on Kafka. It wraps Shopify's Sarama library and simplifies it somewhat.
What is in release 0.1.0 ?
The 0.1.0 release is intended to match the functionality of the internal Kafka library that is used within Heetch. Felice differs from that library in the following ways:
- Felice is issued under an Open Source license (MIT) . Yay! 🎉 🎈 🎆
- Code and configuration specific to Heetch's infrastructure and architecture has been removed.
Today you can use a Producer
to send messages on kafka topics, and use a Consumer
and Handler
to consume them.
Full changelog
2018-11-13 Geoffrey John Teale [email protected]
* : Merge pull request #19 from heetch/bootstap-documentation Bootstrap documentation
2018-11-13 Geoffrey John Teale [email protected]
* consumer/consumer.go: Improve the docs for Consumer.Serve
2018-11-13 Geoffrey John Teale [email protected]
* consumer/consumer.go: Expand in-line docs for Consumer struct
2018-11-13 Geoffrey John Teale [email protected]
* consumer/doc.go: Expand docs on Consumer.Serve to explain
parameters.
2018-11-12 Geoffrey John Teale [email protected]
* README.md: Add a "Where should I start?" section to README.md
2018-11-12 Geoffrey John Teale [email protected]
* consumer/doc.go: Add package level documentation for the Consumer.
2018-11-12 Geoffrey John Teale [email protected]
* : commit 86503274503d31ef29cd17f06e012829936e220d Author: Geoffrey
J. Teale <[email protected]> Date: Wed Oct 24 16:31:30 2018 +0200
2018-10-24 Geoffrey J. Teale [email protected]
* message/option.go: Fix typo "paramters" -> "parameters"
2018-10-24 Geoffrey J. Teale [email protected]
* message/doc.go, message/message.go: Document default message
headers.
2018-10-24 Geoffrey J. Teale [email protected]
* message/message.go: Insert missing "it".
2018-10-24 Geoffrey J. Teale [email protected]
* consumer/handler/doc.go: Make example handlers have the correct
signature.
2018-10-24 Geoffrey J. Teale [email protected]
* consumer/handler/interface.go: Document behaviour when
HandleMessage returns an error.
2018-10-24 Geoffrey J. Teale [email protected]
* consumer/doc.go, consumer/handler/collection.go,
consumer/handler/doc.go, consumer/handler/interface.go,
message/doc.go, message/message.go, message/option.go: Remove double
spaces after periods.
2018-10-24 Asdine El Hrychy [email protected]
* consumer/handler/doc.go: Fix typo "conusmer" -> "consumer" Co-Authored-By: tealeg <[email protected]>
2018-10-24 Geoffrey J. Teale [email protected]
* consumer/doc.go, consumer/handler/doc.go,
consumer/handler/interface.go, message/doc.go, message/message.go,
message/option.go: Fix typo "recieve" -> "receive"
2018-10-22 Geoffrey J. Teale [email protected]
* message/message.go: Improve documentation of the Mesasge type
2018-10-22 Geoffrey J. Teale [email protected]
* message/doc.go: Introduce the message package.
2018-10-22 Geoffrey J. Teale [email protected]
* message/option.go: Document Option, Header and Key more completely
2018-10-22 Geoffrey J. Teale [email protected]
* consumer/handler/interface.go: Improve documentation of Handler
interface
2018-10-22 Geoffrey J. Teale [email protected]
* consumer/handler/func.go: Flesh out the HandlerFunc documentation.
2018-10-22 Geoffrey J. Teale [email protected]
* consumer/handler/doc.go: Describe handler.Collection type in
package overview documentation
2018-10-22 Geoffrey J. Teale [email protected]
* consumer/doc.go: Fix typo in comment.
2018-10-19 Geoffrey J. Teale [email protected]
* consumer/handler/doc.go: Introduce the handler package and discuss
Handler interface
2018-10-18 Geoffrey J. Teale [email protected]
* consumer/doc.go: Add initial doc.go for the, as yet, empty
consumer package.
2018-11-07 Geoffrey John Teale [email protected]
* : Merge pull request #20 from heetch/support-logging Support logging
2018-11-06 Geoffrey John Teale [email protected]
* consumer/consumer.go: Remove commented code
2018-11-05 Geoffrey J. Teale [email protected]
* common/logger.go, common/testutil.go, consumer/consumer.go,
consumer/consumer_internal_test.go, consumer/consumer_test.go,
consumer/handler/collection.go: Simplify logging and log testing
2018-11-05 Geoffrey J. Teale [email protected]
* consumer/consumer.go, consumer/consumer_internal_test.go: Make
NewConsumer private (newConsumer)
2018-11-05 Geoffrey J. Teale [email protected]
* Gopkg.lock, consumer/consumer.go,
consumer/consumer_internal_test.go, consumer/consumer_test.go: Make
ClusterConsumer interface private (clusterConsumer)
2018-11-05 Geoffrey J. Teale [email protected]
* consumer/consumer.go: Remove ClusterConsumer type.
2018-11-02 Geoffrey John Teale [email protected]
* consumer/consumer.go: Log in consumer message handling
2018-11-02 Geoffrey John Teale [email protected]
* consumer/consumer_internal_test.go: Make assertions about logging
in handleMessages
2018-11-02 Geoffrey John Teale [email protected]
* consumer/consumer.go: Make Consumer testable by wrapping
cluster.Consumer in an interface
2018-11-02 Geoffrey John Teale [email protected]
* consumer/consumer_test.go: Use common.Testlogger instead of
defining locally
2018-11-02 Geoffrey John Teale [email protected]
* common/testutil.go: Create TestLogger to simply testing log output
2018-11-01 Geoffrey John Teale [email protected]
* consumer/consumer.go: Make Consumer.Handler and Consumer.Serve
emit expected logs
2018-11-01 Geoffrey John Teale [email protected]
* consumer/consumer_test.go: Test that consumer.Handle and
consumer.Serve emit logs
2018-11-01 Geoffrey John Teale [email protected]
* Gopkg.lock: Update Gopkg.lock
2018-10-30 Geoffrey John Teale [email protected]
* consumer/handler/collection.go: Make consumer.Handle log the topic
being registered
2018-10-30 Geoffrey John Teale [email protected]
* consumer/consumer_test.go: Test that Consumer.Handle logs
2018-10-30 Geoffrey John Teale [email protected]
* common/logger.go: Add common.Logger
2018-10-29 Yasss [email protected]
* : Merge pull request #18 from heetch/import-consumer Import consumer from Kafka-go
2018-10-29 Yasss [email protected]
* consumer/consumer.go, consumer/consumer_internal_test.go: Export
metrics field from Consumer type
2018-10-24 Geoffrey J. Teale [email protected]
* message/option.go: Fix typo "ths" → "this"
2018-10-24 Geoffrey J. Teale [email protected]
* message/option.go: Fix typo "paramters" -> "parameters"
2018-10-24 Geoffrey J. Teale [email protected]
* message/doc.go, message/message.go: Document default message
headers.
2018-10-24 Geoffrey J. Teale [email protected]
* message/message.go: Insert missing "it".
2018-10-24 Geoffrey J. Teale [email protected]
* consumer/handler/doc.go: Make example handlers have the correct
signature.
2018-10-24 Geoffrey J. Teale [email protected]
* consumer/handler/interface.go: Document behaviour when
HandleMessage returns an error.
2018-10-24 Geoffrey J. Teale [email protected]
* : commit a83b1b30719c0bf55676109bedf20416f686c230 Author: Geoffrey
J. Teale <[email protected]> Date: Wed Oct 24 15:26:03 2018 +0200
2018-10-24 Asdine El Hrychy [email protected]
* consumer/handler/doc.go: Fix typo "conusmer" -> "consumer" Co-Authored-By: tealeg <[email protected]>
2018-10-24 Geoffrey J. Teale [email protected]
* consumer/doc.go, consumer/handler/doc.go,
consumer/handler/interface.go, message/doc.go, message/message.go,
message/option.go: Fix typo "recieve" -> "receive"
2018-10-22 Geoffrey J. Teale [email protected]
* message/message.go: Improve documentation of the Mesasge type
2018-10-22 Geoffrey J. Teale [email protected]
* message/doc.go: Introduce the message package.
2018-10-22 Geoffrey J. Teale [email protected]
* message/option.go: Document Option, Header and Key more completely
2018-10-22 Geoffrey J. Teale [email protected]
* consumer/handler/interface.go: Improve documentation of Handler
interface
2018-10-22 Geoffrey J. Teale [email protected]
* consumer/handler/func.go: Flesh out the HandlerFunc documentation.
2018-10-22 Geoffrey J. Teale [email protected]
* consumer/handler/doc.go: Describe handler.Collection type in
package overview documentation
2018-10-22 Geoffrey J. Teale [email protected]
* consumer/doc.go: Fix typo in comment.
2018-10-19 Yasss [email protected]
* consumer/consumer.go: Add Stop method
2018-10-19 Geoffrey J. Teale [email protected]
* consumer/handler/doc.go: Introduce the handler package and discuss
Handler interface
2018-10-18 Yasss [email protected]
* consumer/consumer.go, consumer/consumer_internal_test.go: Add
testing for the configuration creation
2018-10-18 Geoffrey J. Teale [email protected]
* consumer/doc.go: Add initial doc.go for the, as yet, empty
consumer package.
2018-10-17 Geoffrey J. Teale [email protected]
* consumer/consumer_internal_test.go: Test Consumer.setup
2018-10-17 Geoffrey J. Teale [email protected]
* consumer/consumer_internal_test.go: Document test cases.
2018-10-17 Geoffrey J. Teale [email protected]
* consumer/consumer_internal_test.go: Expand tests to include metric
reporting
2018-10-16 Geoffrey J. Teale [email protected]
* consumer/consumer_internal_test.go: Make assertions about Message
passed to the metric Reporter
2018-10...