|
该版本仍在开发中,尚未被视为稳定。请使用最新的稳定版本,使用 Spring AMQP 4.0.0! |
修改消息——压缩及更多
存在若干延伸点。 它们允许你对消息进行一些处理,可以在消息发送到RabbitMQ之前,也可以在收到消息后立即处理。
如消息转换器所示,其中一个扩展点位于Amqp模板 转换与接收作,你可以提供一个消息后处理器.
例如,在你的POJO转换后,消息后处理器允许你在消息.
从1.4.2版本开始,新增了扩展点兔子模板 - setBeforePublishPostProcessors()和setAfterReceivePostProcessors().
第一种是使后处理器能够在发送给RabbitMQ之前立即运行。
使用批次处理(参见批处理)时,批量组装完成后且发送之前调用。
第二种是在收到消息后立即调用的。
这些延伸点用于压缩等功能,为此目的包括消息后处理器提供实现。GZipPost处理器,ZipPost处理器和去键后处理器发送前压缩消息,GUnzipPostProcessor,解封后处理器和膨胀后处理器解压接收到的信息。
从2.1.5版本开始,GZipPost处理器可以配置为copyProperties = true选择复制原始消息属性。
默认情况下,这些属性会被重用以考虑性能,并通过压缩内容编码和可选的MessageProperties.SPRING_AUTO_DECOMPRESS页眉。
如果你保留对原始外发消息的引用,其属性也会改变。
因此,如果你的应用程序保留了带有这些消息后处理器的外发消息副本,可以考虑将copyProperties选项开启。 |
从2.2.12版本开始,你可以配置压缩后处理器在内容编码元素之间使用的分隔符。
在2.2.11版本及之前,这被硬编码为:,现在设置为, '默认。
解压器可以同时使用两个分隔符。
然而,如果你发布的是2.3或更高版本的消息,而消费是2.2.11或更早版本,你必须设置“encodingDelimiter”压缩机上的性质为:.
当你的消费者升级到2.2.11或更高版本时,你可以恢复默认设置“, '。 |
同样,SimpleMessageListenerContainer还有一个setAfterReceivePostProcessors()该方法允许在容器收到消息后执行解压。
从2.1.4版本开始,addBeforePublishPostProcessors()和addAfterReceivePostProcessors()已被添加到兔子模板以便将新的后处理器分别添加到发布前和接收后后处理处理器列表中。
此外,还提供了去除后处理器的方法。
同样地摘要MessageListenerContainer也具有addAfterReceivePostProcessors()和removeAfterReceivePostProcessor()添加方法。
参见 Javadoc兔子模板和摘要MessageListenerContainer更多细节。