packages feed

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 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