对于最新的稳定版本,请使用 Spring AMQP 3.2.0! |
修改消息 - 压缩等
存在许多扩展点。 它们允许您在消息发送到 RabbitMQ 之前或接收消息后立即对消息执行一些处理。
从消息转换器中可以看出,操作中就有这样一个扩展点,您可以在其中提供 .
例如,转换 POJO 后,您可以在 .AmqpTemplate
convertAndReceive
MessagePostProcessor
MessagePostProcessor
Message
从版本 1.4.2 开始,已向 - 和 .
第一个选项使后处理器能够在发送到 RabbitMQ 之前立即运行。
使用批处理时(请参阅 批处理),在组装批处理之后和发送批处理之前调用此函数。
第二个请求在收到消息后立即调用。RabbitTemplate
setBeforePublishPostProcessors()
setAfterReceivePostProcessors()
这些扩展点用于压缩等功能,为此,提供了多种实现。,并在发送前压缩消息,以及 和 解压缩收到的消息。MessagePostProcessor
GZipPostProcessor
ZipPostProcessor
DeflaterPostProcessor
GUnzipPostProcessor
UnzipPostProcessor
InflaterPostProcessor
从版本 2.1.5 开始,可以配置用于复制原始消息属性的选项。
默认情况下,出于性能原因,这些属性会重复使用,并使用压缩内容编码和可选标头进行修改。
如果保留对原始出站消息的引用,则其属性也将更改。
因此,如果您的应用程序保留了带有这些消息后处理器的出站消息的副本,请考虑打开该选项。GZipPostProcessor copyProperties = true MessageProperties.SPRING_AUTO_DECOMPRESS copyProperties |
从版本 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 : |
同样,它也有一个方法,允许在容器收到消息后执行解压缩。SimpleMessageListenerContainer
setAfterReceivePostProcessors()
从版本 2.1.4 开始,已添加到 中,以允许将新的后处理器分别附加到 before publish 和 after receive 后处理器列表中。
此外,还提供了一些方法来删除后处理器。
同样,还添加了 和 methods。
有关更多详细信息,请参阅 和 的 Javadoc。addBeforePublishPostProcessors()
addAfterReceivePostProcessors()
RabbitTemplate
AbstractMessageListenerContainer
addAfterReceivePostProcessors()
removeAfterReceivePostProcessor()
RabbitTemplate
AbstractMessageListenerContainer