Browse Source

Merge pull request #45 from Shopify/compress_message_sets

When compressing messages, wrap them in a message-set
Evan Huus 12 years ago
parent
commit
c3304ae940
1 changed files with 9 additions and 0 deletions
  1. 9 0
      producer.go

+ 9 - 0
producer.go

@@ -104,6 +104,15 @@ func (p *Producer) safeSendMessage(key, value Encoder, retry bool) error {
 		return err
 		return err
 	}
 	}
 
 
+	if p.config.Compression != CompressionNone {
+		set := new(MessageSet)
+		set.addMessage(&Message{Codec: CompressionNone, Key: keyBytes, Value: valBytes})
+		valBytes, err = encode(set)
+		if err != nil {
+			return err
+		}
+	}
+
 	request := &ProduceRequest{RequiredAcks: p.config.RequiredAcks, Timeout: p.config.Timeout}
 	request := &ProduceRequest{RequiredAcks: p.config.RequiredAcks, Timeout: p.config.Timeout}
 	request.AddMessage(p.topic, partition, &Message{Codec: p.config.Compression, Key: keyBytes, Value: valBytes})
 	request.AddMessage(p.topic, partition, &Message{Codec: p.config.Compression, Key: keyBytes, Value: valBytes})