@@ -1293,6 +1293,98 @@ func TestConsumerCompression(t *testing.T) {
12931293 }
12941294}
12951295
1296+ func TestConsumerMultiCompressions (t * testing.T ) {
1297+ type testProvider struct {
1298+ name string
1299+ compressionType CompressionType
1300+ }
1301+
1302+ providers := []testProvider {
1303+ {"zlib" , ZLib },
1304+ {"lz4" , LZ4 },
1305+ {"zstd" , ZSTD },
1306+ {"snappy" , SNAPPY },
1307+ }
1308+
1309+ for _ , provider := range providers {
1310+ p := provider
1311+ t .Run (p .name , func (t * testing.T ) {
1312+ client , err := NewClient (ClientOptions {
1313+ URL : lookupURL ,
1314+ })
1315+
1316+ assert .Nil (t , err )
1317+ defer client .Close ()
1318+
1319+ batchTopic , nonBatchTopic := newTopicName (), newTopicName ()
1320+ ctx := context .Background ()
1321+
1322+ // enable batching
1323+ batchProducer , err := client .CreateProducer (ProducerOptions {
1324+ Topic : batchTopic ,
1325+ CompressionType : p .compressionType ,
1326+ DisableBatching : false ,
1327+ })
1328+ assert .Nil (t , err )
1329+ defer batchProducer .Close ()
1330+
1331+ batchConsumer , err := client .Subscribe (ConsumerOptions {
1332+ Topic : batchTopic ,
1333+ SubscriptionName : "sub-1" ,
1334+ })
1335+ assert .Nil (t , err )
1336+ defer batchConsumer .Close ()
1337+
1338+ const N = 100
1339+ for i := 0 ; i < N ; i ++ {
1340+ batchProducer .SendAsync (ctx , & ProducerMessage {
1341+ Payload : []byte (fmt .Sprintf ("msg-content-%d-batching-enabled" , i )),
1342+ }, func (_ MessageID , _ * ProducerMessage , err error ) {
1343+ assert .Nil (t , err )
1344+ })
1345+ }
1346+
1347+ for i := 0 ; i < N ; i ++ {
1348+ msg , err := batchConsumer .Receive (ctx )
1349+ assert .Nil (t , err )
1350+ assert .Equal (t , fmt .Sprintf ("msg-content-%d-batching-enabled" , i ), string (msg .Payload ()))
1351+ batchConsumer .Ack (msg )
1352+ }
1353+
1354+ // disable batching
1355+ nonBatchProducer , err := client .CreateProducer (ProducerOptions {
1356+ Topic : nonBatchTopic ,
1357+ CompressionType : p .compressionType ,
1358+ DisableBatching : true ,
1359+ })
1360+ assert .Nil (t , err )
1361+ defer nonBatchProducer .Close ()
1362+
1363+ nonBatchConsumer , err := client .Subscribe (ConsumerOptions {
1364+ Topic : nonBatchTopic ,
1365+ SubscriptionName : "sub-1" ,
1366+ })
1367+ assert .Nil (t , err )
1368+ defer nonBatchConsumer .Close ()
1369+
1370+ for i := 0 ; i < N ; i ++ {
1371+ if _ , err := nonBatchProducer .Send (ctx , & ProducerMessage {
1372+ Payload : []byte (fmt .Sprintf ("msg-content-%d-batching-disabled" , i )),
1373+ }); err != nil {
1374+ t .Fatal (err )
1375+ }
1376+ }
1377+
1378+ for i := 0 ; i < N ; i ++ {
1379+ msg , err := nonBatchConsumer .Receive (ctx )
1380+ assert .Nil (t , err )
1381+ assert .Equal (t , fmt .Sprintf ("msg-content-%d-batching-disabled" , i ), string (msg .Payload ()))
1382+ nonBatchConsumer .Ack (msg )
1383+ }
1384+ })
1385+ }
1386+ }
1387+
12961388func TestConsumerCompressionWithBatches (t * testing.T ) {
12971389 client , err := NewClient (ClientOptions {
12981390 URL : lookupURL ,
0 commit comments