跳至主内容

RabbitMQ Java 客户端 5.0 发布

·阅读时长4分钟

RabbitMQ 团队很高兴地宣布发布 RabbitMQ Java 客户端 5.0 版本。新版本现已基于 Java 8,并带来了一系列有趣的新功能。

Java 8 现已成为先决条件

RabbitMQ Java Client 多年来一直支持 Java 6(2006 年发布!)。现在是时候提高先决条件,以利用现代 Java 的特性了。对于那些仍在使用 Java 6 或 Java 7 的用户无需担心:我们将在未来几个月内继续支持 Java Client 4.x.x 系列(提供错误修复,甚至尽可能提供相关的新功能)。请注意,Java Client 5.0(以及 4.x.x)也支持 Java 9。

春季清理

一些类和接口在当今看来已不再适用,并在之前的重大版本中被标记为弃用:例如 FlowListenerQueueingConsumer(以及其他一些)。它们已在 5.0 版本中被移除。

面向 Lambda 的新方法

针对常见用例引入了面向 Lambda 的方法,例如消费消息

consumingChannel.basicConsume(queue,
(consumerTag, delivery) -> businessService.handle(delivery),
consumerTag -> LOGGER.info("Consumer {} has been cancelled")
);

其他面向 Lambda 的方法也适用于大多数客户端监听器。这应该能使相关的应用程序代码更简洁、更易读。

指定客户端证书的更高灵活性

在 Java 中,客户端证书是通过 SSLContextKeyManager 来提供的。如果 RabbitMQ Java Client 中的不同客户端连接需要不同的客户端证书,则需要不同实例的 ConnectionFactory。在 5.0 中,我们引入了 SslContextFactory

public interface SslContextFactory {

SSLContext create(String name);

}

现在,您可以在 ConnectionFactory 中设置自己的 SslContextFactory,从而根据连接名称提供逻辑,为该连接创建合适的 SslContextSslContextFactory 的实现可以从文件系统目录或任何其他证书库(数据库、LDAP 注册表等)中查找证书。结合 NIO(在 4.0 中添加),这是在单个 JVM 进程中仅使用少量线程即可拥有多个客户端连接的绝佳方式。

重大更改

重大版本更新是进行上述清理并引入新功能的绝佳时机。遗憾的是,这些新功能有时会破坏现有的 API。不必担心,我们努力保持了向后兼容性,大多数应用程序应该不会受到这些更改的影响。如有疑问,请查看发布变更日志中的专门章节

总结

RabbitMQ 团队希望您喜欢这个新版本的 Java Client。请随时查阅发布变更日志以获取所有详细信息。二进制文件照常可从 Maven Central 和我们的 Bintray 仓库获取。要使用 RabbitMQ Java Client 5.0,如果您使用 Maven,请添加以下依赖项:

<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.0.0</version>
</dependency>

如果您使用 Gradle:

compile 'com.rabbitmq:amqp-client:5.0.0'

尽情享受吧!

© . This site is unofficial and not affiliated with VMware.