freckle-kafka 0.0.0.2 → 0.0.0.3
raw patch · 4 files changed
+36/−17 lines, 4 filesdep ~freckle-envPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: freckle-env
API changes (from Hackage documentation)
- Freckle.App.Kafka.Consumer: instance GHC.Exception.Type.Exception Freckle.App.Kafka.Consumer.KafkaMessageDecodeError
- Freckle.App.Kafka.Consumer: instance GHC.Show.Show Freckle.App.Kafka.Consumer.BatchConsumerError
- Freckle.App.Kafka.Consumer: instance GHC.Show.Show Freckle.App.Kafka.Consumer.KafkaConsumerConfig
- Freckle.App.Kafka.Consumer: instance GHC.Show.Show Freckle.App.Kafka.Consumer.KafkaMessageDecodeError
- Freckle.App.Kafka.Producer: instance GHC.Show.Show Freckle.App.Kafka.Producer.KafkaProducerPoolConfig
+ Freckle.App.Kafka.Consumer: instance GHC.Internal.Exception.Type.Exception Freckle.App.Kafka.Consumer.KafkaMessageDecodeError
+ Freckle.App.Kafka.Consumer: instance GHC.Internal.Show.Show Freckle.App.Kafka.Consumer.BatchConsumerError
+ Freckle.App.Kafka.Consumer: instance GHC.Internal.Show.Show Freckle.App.Kafka.Consumer.KafkaConsumerConfig
+ Freckle.App.Kafka.Consumer: instance GHC.Internal.Show.Show Freckle.App.Kafka.Consumer.KafkaMessageDecodeError
+ Freckle.App.Kafka.Producer: instance GHC.Internal.Show.Show Freckle.App.Kafka.Producer.KafkaProducerPoolConfig
+ Freckle.App.Kafka.Producer: produce :: (MonadUnliftIO m, MonadLogger m, MonadTracer m, MonadReader env m, HasKafkaProducerPool env) => TopicName -> NonEmpty ProducerRecord -> m ()
Files
- CHANGELOG.md +5/−1
- freckle-kafka.cabal +2/−2
- library/Freckle/App/Kafka/Producer.hs +28/−13
- package.yaml +1/−1
CHANGELOG.md view
@@ -1,4 +1,8 @@-## [_Unreleased_](freckle-kafka-v0.0.0.2...main)+## [_Unreleased_](freckle-kafka-v0.0.0.3...main)++## [v0.0.0.3](https://github.com/freckle/freckle-app/compare/freckle-kafka-v0.0.0.2...freckle-kafka-v0.0.0.3)++Add `produce` ## [v1.21.1.0](https://github.com/freckle/freckle-app/compare/freckle-kafka-v0.0.0.1...freckle-kafka-v0.0.0.2)
freckle-kafka.cabal view
@@ -1,6 +1,6 @@ cabal-version: 1.18 name: freckle-kafka-version: 0.0.0.2+version: 0.0.0.3 license: MIT license-file: LICENSE maintainer: Freckle Education@@ -48,7 +48,7 @@ base >=4.16.4.0 && <5, bytestring >=0.11.4.0, containers >=0.6.5.1,- freckle-env >=0.0.1.1,+ freckle-env >=0.0.1.2, hs-opentelemetry-sdk >=0.0.3.6, hw-kafka-client >=5.0.0, lens >=5.1.1,
library/Freckle/App/Kafka/Producer.hs view
@@ -9,6 +9,7 @@ , HasKafkaProducerPool (..) , createKafkaProducerPool , produceKeyedOn+ , produce ) where import Prelude@@ -136,30 +137,44 @@ -> NonEmpty value -> (value -> key) -> m ()-produceKeyedOn prTopic values keyF = traced $ do- logDebugNS "kafka" $ "Producing Kafka events" :# ["events" .= values]+produceKeyedOn prTopic values keyF = produce prTopic (NE.map mkProducerRecord values)+ where+ mkProducerRecord value =+ ProducerRecord+ { prTopic+ , prPartition = UnassignedPartition+ , prKey = Just $ BSL.toStrict $ encode $ keyF value+ , prValue = Just $ BSL.toStrict $ encode value+ , prHeaders = mempty+ }++-- | Produce/Emit a message to a Kafka topic+produce+ :: ( MonadUnliftIO m+ , MonadLogger m+ , MonadTracer m+ , MonadReader env m+ , HasKafkaProducerPool env+ )+ => TopicName+ -> NonEmpty ProducerRecord+ -> m ()+produce prTopic events = traced $ do+ logDebugNS "kafka" $+ "Producing Kafka events" :# ["events" .= NE.map show events] view kafkaProducerPoolL >>= \case NullKafkaProducerPool -> pure () KafkaProducerPool producerPool -> withRunInIO $ \run -> Pool.withResource producerPool $ \producer ->- for_ @NonEmpty values $ \value -> do- mError <- liftIO $ produceMessage producer $ mkProducerRecord value+ for_ @NonEmpty events $ \event -> do+ mError <- liftIO $ produceMessage producer event for_ @Maybe mError $ \e -> run $ logErrorNS "kafka" $ "Failed to send event" :# ["error" .= T.pack (show e)] where- mkProducerRecord value =- ProducerRecord- { prTopic- , prPartition = UnassignedPartition- , prKey = Just $ BSL.toStrict $ encode $ keyF value- , prValue = Just $ BSL.toStrict $ encode value- , prHeaders = mempty- }- traced = inSpan "kafka.produce"
package.yaml view
@@ -1,5 +1,5 @@ name: freckle-kafka-version: 0.0.0.2+version: 0.0.0.3 maintainer: Freckle Education category: Database github: freckle/freckle-app