@@ -212,31 +212,45 @@ def run
212
212
@logger . push_tags ( @producer . to_s )
213
213
@logger . info "Starting async producer in the background..."
214
214
215
+ do_loop
216
+ rescue Exception => e
217
+ @logger . error "Unexpected Kafka error #{ e . class } : #{ e . message } \n #{ e . backtrace . join ( "\n " ) } "
218
+ @logger . error "Async producer crashed!"
219
+ ensure
220
+ @producer . shutdown
221
+ @logger . pop_tags
222
+ end
223
+
224
+ private
225
+
226
+ def do_loop
215
227
loop do
216
- operation , payload = @queue . pop
217
-
218
- case operation
219
- when :produce
220
- produce ( payload [ 0 ] , **payload [ 1 ] )
221
- deliver_messages if threshold_reached?
222
- when :deliver_messages
223
- deliver_messages
224
- when :shutdown
225
- begin
226
- # Deliver any pending messages first.
227
- @producer . deliver_messages
228
- rescue Error => e
229
- @logger . error ( "Failed to deliver messages during shutdown: #{ e . message } " )
230
-
231
- @instrumenter . instrument ( "drop_messages.async_producer" , {
232
- message_count : @producer . buffer_size + @queue . size ,
233
- } )
228
+ begin
229
+ operation , payload = @queue . pop
230
+
231
+ case operation
232
+ when :produce
233
+ produce ( payload [ 0 ] , **payload [ 1 ] )
234
+ deliver_messages if threshold_reached?
235
+ when :deliver_messages
236
+ deliver_messages
237
+ when :shutdown
238
+ begin
239
+ # Deliver any pending messages first.
240
+ @producer . deliver_messages
241
+ rescue Error => e
242
+ @logger . error ( "Failed to deliver messages during shutdown: #{ e . message } " )
243
+
244
+ @instrumenter . instrument ( "drop_messages.async_producer" , {
245
+ message_count : @producer . buffer_size + @queue . size ,
246
+ } )
247
+ end
248
+
249
+ # Stop the run loop.
250
+ break
251
+ else
252
+ raise "Unknown operation #{ operation . inspect } "
234
253
end
235
-
236
- # Stop the run loop.
237
- break
238
- else
239
- raise "Unknown operation #{ operation . inspect } "
240
254
end
241
255
end
242
256
rescue Kafka ::Error => e
@@ -245,16 +259,8 @@ def run
245
259
246
260
sleep 10
247
261
retry
248
- rescue Exception => e
249
- @logger . error "Unexpected Kafka error #{ e . class } : #{ e . message } \n #{ e . backtrace . join ( "\n " ) } "
250
- @logger . error "Async producer crashed!"
251
- ensure
252
- @producer . shutdown
253
- @logger . pop_tags
254
262
end
255
263
256
- private
257
-
258
264
def produce ( value , **kwargs )
259
265
retries = 0
260
266
begin
0 commit comments