如何从 .NET (.NET Core) 中的 rabbitmq 获取 gzip 消息和提取的数据?

How can I get gzip message ,extracted data, from rabbitmq in .NET (.NET Core)?

如何在 .NET 中从 rabbitmq 获取 gzip 消息? (使用一些 header)

如果你想解压一个gzip压缩的队列消息,你可以使用下面的方法:

  public static class Gzip {
    public static string Decompress(byte[] data) {
      using (var inStream = new MemoryStream(data))
      using (var outStream = new MemoryStream()) {
        using (var gzStream = new GZipStream(inStream, CompressionMode.Decompress))
          gzStream.CopyTo(outStream);

        return Encoding.UTF8.GetString(outStream.ToArray());
      }
    }
  }

AMQP 协议不支持压缩。任何消息有效负载的压缩都需要在您自己的代码中完成。另一个答案中提供了这种方法的示例。

一个更好的问题是 "should I compress messages in RabbitMQ (or any other broker)?",答案是 "no." 如果您正确使用消息传递,有效负载很小 - 在 100kB 以下,并且压缩的开销会产生净负性能惩罚。如果您发现需要压缩消息,您可能还需要选择另一种技术(即数据库)。