@@ -67,7 +67,7 @@ public struct KafkaConsumerMessages: Sendable, AsyncSequence {
67
67
public typealias Element = KafkaConsumerMessage
68
68
typealias BackPressureStrategy = NIOAsyncSequenceProducerBackPressureStrategies . NoBackPressure
69
69
typealias WrappedSequence = NIOThrowingAsyncSequenceProducer <
70
- Element ,
70
+ Result < KafkaConsumerMessage , Error > ,
71
71
Error ,
72
72
BackPressureStrategy ,
73
73
KafkaConsumerCloseOnTerminate
@@ -80,24 +80,30 @@ public struct KafkaConsumerMessages: Sendable, AsyncSequence {
80
80
var wrappedIterator : WrappedSequence . AsyncIterator ?
81
81
82
82
public mutating func next( ) async throws -> Element ? {
83
- guard let element = try await self . wrappedIterator? . next ( ) else {
83
+ guard let result = try await self . wrappedIterator? . next ( ) else {
84
84
self . deallocateIterator ( )
85
85
return nil
86
86
}
87
87
88
- let action = self . stateMachine. withLockedValue { $0. storeOffset ( ) }
89
- switch action {
90
- case . storeOffset( let client) :
91
- do {
92
- try client. storeMessageOffset ( element)
93
- } catch {
88
+ switch result {
89
+ case . success( let message) :
90
+ let action = self . stateMachine. withLockedValue { $0. storeOffset ( ) }
91
+ switch action {
92
+ case . storeOffset( let client) :
93
+ do {
94
+ try client. storeMessageOffset ( message)
95
+ } catch {
96
+ self . deallocateIterator ( )
97
+ throw error
98
+ }
99
+ return message
100
+ case . terminateConsumerSequence:
94
101
self . deallocateIterator ( )
95
- throw error
102
+ return nil
96
103
}
97
- return element
98
- case . terminateConsumerSequence:
104
+ case . failure( let error) :
99
105
self . deallocateIterator ( )
100
- return nil
106
+ throw error
101
107
}
102
108
}
103
109
@@ -119,7 +125,7 @@ public struct KafkaConsumerMessages: Sendable, AsyncSequence {
119
125
/// A ``KafkaConsumer `` can be used to consume messages from a Kafka cluster.
120
126
public final class KafkaConsumer : Sendable , Service {
121
127
typealias Producer = NIOThrowingAsyncSequenceProducer <
122
- KafkaConsumerMessage ,
128
+ Result < KafkaConsumerMessage , Error > ,
123
129
Error ,
124
130
NIOAsyncSequenceProducerBackPressureStrategies . NoBackPressure ,
125
131
KafkaConsumerCloseOnTerminate
@@ -156,7 +162,7 @@ public final class KafkaConsumer: Sendable, Service {
156
162
self . logger = logger
157
163
158
164
let sourceAndSequence = NIOThrowingAsyncSequenceProducer . makeSequence (
159
- elementType: KafkaConsumerMessage . self,
165
+ elementType: Result < KafkaConsumerMessage , Error > . self,
160
166
backPressureStrategy: NIOAsyncSequenceProducerBackPressureStrategies . NoBackPressure ( ) ,
161
167
delegate: KafkaConsumerCloseOnTerminate ( stateMachine: self . stateMachine)
162
168
)
@@ -333,14 +339,8 @@ public final class KafkaConsumer: Sendable, Service {
333
339
for event in events {
334
340
switch event {
335
341
case . consumerMessages( let result) :
336
- switch result {
337
- case . success( let message) :
338
- // We do not support back pressure, we can ignore the yield result
339
- _ = source. yield ( message)
340
- case . failure( let error) :
341
- source. finish ( )
342
- throw error
343
- }
342
+ // We do not support back pressure, we can ignore the yield result
343
+ _ = source. yield ( result)
344
344
default :
345
345
break // Ignore
346
346
}
0 commit comments