RabbitMQ Java 客户端 5.0 发布
RabbitMQ 团队很高兴宣布发布 RabbitMQ Java 客户端 5.0 版本。这个新版本现在基于 Java 8,并带来了一系列有趣的新功能。
Java 8 现在是先决条件
多年来,RabbitMQ Java 客户端一直支持 Java 6(于 2006 年发布!)。现在是时候提升先决条件,以受益于现代 Java 功能了。对于那些仍然使用 Java 6 或 Java 7 的用户,无需担心:我们将在接下来的几个月内支持 Java 客户端 4.x.x 系列(错误修复,甚至可能包含相关的新功能)。请注意,Java 客户端 5.0(以及 4.x.x)也支持 Java 9。
代码清理
一些类和接口在今天看来不太相关,并且在之前的major版本中被标记为已弃用:例如 FlowListener
和 QueueingConsumer
(等等)。它们已在 5.0 版本中移除。
新的面向 Lambda 的方法
为常见用例引入了面向 Lambda 的方法,例如 消费消息
consumingChannel.basicConsume(queue,
(consumerTag, delivery) -> businessService.handle(delivery),
consumerTag -> LOGGER.info("Consumer {} has been cancelled")
);
其他面向 lambda 的方法也可用于大多数 客户端 监听器。这应该使相关的应用程序代码更简洁易读。
更灵活地指定客户端证书
在 Java 中,客户端证书通过 SSLContext
的 KeyManager
呈现。如果不同的客户端连接在 RabbitMQ Java 客户端中需要不同的客户端证书,则它们需要 ConnectionFactory
的不同实例。在 5.0 版本中,我们引入了 SslContextFactory
public interface SslContextFactory {
SSLContext create(String name);
}
现在,您可以在 ConnectionFactory
中设置您自己的 SslContextFactory
,以提供基于连接名称的逻辑,来为此连接创建适当的 SslContext
。SslContextFactory
实现可以从文件系统目录或任何其他证书存储库(数据库、LDAP 注册表等)查找证书。与 NIO(在 4.0 中添加)结合使用,这是在单个 JVM 进程中拥有许多客户端连接(仅使用少量线程)的好方法。
破坏性变更
如上所述,major 版本是进行一些清理和引入新功能的好时机。不幸的是,这些新功能有时会破坏现有的 API。请放心,我们努力保持向后兼容性,大多数应用程序不应受到这些更改的影响。如有疑问,请查看发布变更日志中的 专门章节。
总结
RabbitMQ 团队希望您会喜欢这个新版本的 Java 客户端。请随时查阅 发布变更日志 以获取所有详细信息。二进制文件照常可以从 Maven Central 和我们的 Bintray 仓库 获取。要使用 RabbitMQ Java 客户端 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'
祝您使用愉快!