领先一步
VMware 提供培训和认证,助您加速进步。
了解更多我们很高兴地宣布 Spring AMQP 1.6 release candidate (1.6.0.RC1) 现已在 spring milestone repo 上提供。
1.5.6 维护版本也已发布,包含 一些 bug 修复。
这是 1.6.0 版本内容的摘要,更多详情请参阅参考文档中的 新功能介绍 以及 此版本的已关闭 JIRA 问题。
新增了一个 jar 文件 spring-rabbit-test,其中包含一个测试套件,用于帮助测试 @RabbitListener 方法;请参阅 测试章节。
方法上支持多个 @RabbitListener 注解(使用 Java 8 时)以及 @RabbitListeners 注解(Java 8 之前),允许同一方法成为多个监听器容器的监听器方法。
完全支持 延迟消息交换(Delayed Message Exchange) RabbitMQ 插件。
AsyncRabbitTemplate 返回 ListenableFuture<?> 用于请求/回复消息。
提供一个选项,当监听器容器空闲时发布 ApplicationEvents。
缓存连接工厂现在公开缓存统计信息。
@RabbitListener 方法现在将类型信息传递给消息转换器以进行入站消息处理。这意味着,例如,当收到没有消息头类型信息的消息时(例如,来自非 Spring AMQP 应用程序的发送者),Jackson2JsonMessageConverter 不再需要自定义类映射器。取而代之的是,在转换中使用 @RabbitListener 方法参数类型。此外,Method 和 bean 也通过消息属性提供给自定义转换器。
@Bean
public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(
ConnectionFactory rabbitConnectionFactory) {
SimpleRabbitListenerContainerFactory factory =
new SimpleRabbitListenerContainerFactory();
factory.setConnectionFactory(rabbitConnectionFactory);
factory.setMessageConverter(new Jackson2JsonMessageConverter());
return factory;
}
public static class MyService {
@RabbitListener(queues="foos")
public void handleFoos(Foo foo) {
...
}
@RabbitListener(queues="lists.of.bars")
public void handleBarLists(List<Bar> bars) {
...
}
}
@RabbitListener 的不可恢复错误现在被默认错误处理器视为致命错误,以避免此类消息的无休止重发。
@RabbitListener @SendTo 地址(当入站消息没有 replyTo 时使用)现在可以包含一个 SpEL 表达式,该表达式将在运行时针对输入和输出消息进行评估。
在使用 Java 序列化消息时,现在可以为反序列化指定允许的类/包的“白名单”。当从不受信任的源接收序列化对象时,建议这样做。
现在可以声明“内部”交换器,消息不能直接发布到这些交换器。
日志附加器现在可以配置多个代理地址,并且可以设置客户端属性。
@QueueBinding 注释现在支持队列、交换器和绑定的参数。
我们预计将在五月底发布最终版本。
请下载并试用发布候选版本,以便我们在 GA 之前解决任何问题。接下来(2017 年)是 2.0 版本,它可能需要 Spring 5 并包含一些响应式流(Reactive Streams)的努力。
我们欢迎通过常规渠道提出的任何反馈、问题或帮助。