此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring AMQP 3.2.0spring-doc.cn

修改消息 - 压缩等

存在许多扩展点。 它们允许您在消息发送到 RabbitMQ 之前或接收消息后立即对消息执行一些处理。spring-doc.cn

消息转换器中可以看出,操作中就有这样一个扩展点,您可以在其中提供 . 例如,转换 POJO 后,您可以在 .AmqpTemplateconvertAndReceiveMessagePostProcessorMessagePostProcessorMessagespring-doc.cn

从版本 1.4.2 开始,已向 - 和 . 第一个选项使后处理器能够在发送到 RabbitMQ 之前立即运行。 使用批处理时(请参阅 批处理),在组装批处理之后和发送批处理之前调用此函数。 第二个请求在收到消息后立即调用。RabbitTemplatesetBeforePublishPostProcessors()setAfterReceivePostProcessors()spring-doc.cn

这些扩展点用于压缩等功能,为此,提供了多种实现。,并在发送前压缩消息,以及 和 解压缩收到的消息。MessagePostProcessorGZipPostProcessorZipPostProcessorDeflaterPostProcessorGUnzipPostProcessorUnzipPostProcessorInflaterPostProcessorspring-doc.cn

从版本 2.1.5 开始,可以配置用于复制原始消息属性的选项。 默认情况下,出于性能原因,这些属性会重复使用,并使用压缩内容编码和可选标头进行修改。 如果保留对原始出站消息的引用,则其属性也将更改。 因此,如果您的应用程序保留了带有这些消息后处理器的出站消息的副本,请考虑打开该选项。GZipPostProcessorcopyProperties = trueMessageProperties.SPRING_AUTO_DECOMPRESScopyProperties
从版本 2.2.12 开始,您可以配置压缩后处理器在内容编码元素之间使用的分隔符。 在版本 2.2.11 及更早版本中,这被硬编码为 ,现在它被设置为压缩器上的属性。 当您的使用者升级到 2.2.11 或更高版本时,您可以恢复为默认值 ', '。:, ` by default. The decompressors will work with both delimiters. However, if you publish messages with 2.3 or later and consume with 2.2.11 or earlier, you MUST set the `encodingDelimiter:

同样,它也有一个方法,允许在容器收到消息后执行解压缩。SimpleMessageListenerContainersetAfterReceivePostProcessors()spring-doc.cn

从版本 2.1.4 开始,已添加到 中,以允许将新的后处理器分别附加到 before publish 和 after receive 后处理器列表中。 此外,还提供了一些方法来删除后处理器。 同样,还添加了 和 methods。 有关更多详细信息,请参阅 和 的 Javadoc。addBeforePublishPostProcessors()addAfterReceivePostProcessors()RabbitTemplateAbstractMessageListenerContaineraddAfterReceivePostProcessors()removeAfterReceivePostProcessor()RabbitTemplateAbstractMessageListenerContainerspring-doc.cn