跳到主要内容

在PubSub+ JCSMP API中的端到端负载压缩

PubSub+ JCSMP API 可以执行端到端负载压缩,以实现:

  • 更快的消息吞吐量
  • 减少带宽使用
  • 提高应用程序的性能

尽管端到端负载压缩会增加单个 PubSub+ API 的工作量,但它可以实现更快的消息发布和接收的聚合速率。PubSub+ 事件代理提供了传输消息压缩,可以压缩整个消息,详情请参阅流式压缩连接。然而,当您发送和接收大消息时,压缩整个消息会给事件代理带来大量工作,这可能导致吞吐量降低。如果您的应用程序需要发送和接收大消息,我们建议您使用端到端负载压缩以提高性能。

压缩消息负载时的注意事项

使用一种消息压缩方式

我们建议您只使用一种压缩方式,即通过事件代理进行流式压缩连接或通过 API 进行端到端负载压缩。多次压缩相同的消息会浪费资源,通常也不会得到更小的消息大小。

不要使用端到端负载压缩绕过事件代理支持的最大消息大小

不要传递超过事件代理支持的最大消息大小的负载。我们建议您在使用负载压缩之前,将负载大小减小,以确保其小于事件代理支持的最大消息大小。有关最大消息大小的更多信息,请参阅发送大于事件代理最大消息大小的消息。

不要对小消息使用端到端负载压缩

端到端负载压缩最适合处理几兆字节大小的消息。Solace 不建议对小消息使用消息负载压缩,因为端到端负载压缩实际上可能会增加小消息的大小。

升级您的发布者和接收者应用程序

只有当 API 支持消息负载压缩并且已更新到最低支持版本时,接收者应用程序才会自动解压缩任何压缩的消息负载。如果您的接收者应用程序不支持消息负载压缩,可能会导致潜在的错误或异常。请确保将您的发布者和接收者应用程序都更新到负载压缩的最低支持版本。有关版本支持信息,请参阅 PubSub+ 消息传递 API 中的功能支持。

端到端负载压缩的限制

端到端负载压缩目前不支持 PubSub+ 缓存。

端到端负载压缩与以下内容不兼容:

  • SolCache
  • 非 SMF 协议,如 AMQP、HTTP、Kafka 和 MQTT

如果您的应用程序使用了上述任何内容,我们建议您不要使用端到端负载压缩。

在 PubSub+ JCSMP API 中压缩消息负载

您的发布者应用程序可以在发布消息之前压缩消息的二进制负载。要压缩消息负载,您必须设置一个属性,告诉 API 您希望启用端到端负载压缩。负载压缩级别属性可以设置为 0 到 9 之间的整数:

  • 0 — 禁用负载压缩。这是默认设置。
  • 1 - 9 — 启用负载压缩。1 是最低压缩级别,数据吞吐量最快,9 是最高压缩级别,数据吞吐量最慢。

您应该根据网络和性能要求调整负载压缩级别。

要在发布者应用程序中启用端到端负载压缩,请在配置会话属性时设置 JCSMPProperties.PAYLOAD_COMPRESSION_LEVEL 属性。例如:

JCSMPProperties properties = new JCSMPProperties();
properties.setProperty(JCSMPProperties.PAYLOAD_COMPRESSION_LEVEL, Integer.valueOf(9)); // 启用负载压缩,最大压缩

有关更多信息,请参阅 PubSub+ 消息传递 API JCSMP 参考。