@@ -472,6 +472,35 @@ var _ = Describe("Streaming Consumers", func() {
472472
473473 })
474474
475+ It ("Not panics on close when the internal queue is full" , func () {
476+ producer , err := env .NewProducer (streamName , nil )
477+ Expect (err ).NotTo (HaveOccurred ())
478+ err = producer .BatchSend (CreateArrayMessagesForTesting (10_000 ))
479+ Expect (err ).NotTo (HaveOccurred ())
480+
481+ defer func (producer * Producer ) {
482+ err := producer .Close ()
483+ Expect (err ).NotTo (HaveOccurred ())
484+ }(producer )
485+
486+ const credits = 2
487+ consumer , err := env .NewConsumer (streamName ,
488+ func (_ ConsumerContext , _ * amqp.Message ) {
489+ // it usually happens with slow consumer that fulfill the internal queue
490+ time .Sleep (time .Hour )
491+ }, NewConsumerOptions ().
492+ SetInitialCredits (credits ).
493+ SetOffset (OffsetSpecification {}.First ()).
494+ SetConsumerName ("consumer_test" ))
495+ Expect (err ).NotTo (HaveOccurred ())
496+
497+ // waiting the internal queue to fulfill
498+ time .Sleep (time .Second )
499+ Expect (len (consumer .chunkForConsumer )).To (Equal (credits ))
500+
501+ Expect (consumer .Close ()).NotTo (HaveOccurred ())
502+ })
503+
475504 It ("message Properties" , func () {
476505 producer , err := env .NewProducer (streamName , nil )
477506
0 commit comments