RabbitMQ Java 客户端 5.0 发布
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 系列(进行 Bug 修复,甚至可能提供相关的新功能)。请注意,Java Client 5.0(以及 4.x.x)也支持 Java 9。
Spring 清理
一些类和接口在当今看来已不太相关,并在之前的主要版本中被标记为已弃用:例如 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 Client 中,它们需要不同的 ConnectionFactory 实例。在 5.0 版本中,我们引入了 SslContextFactory
public interface SslContextFactory {
SSLContext create(String name);
}
现在,您可以在 ConnectionFactory 中设置自己的 SslContextFactory,以根据连接名称来提供逻辑,从而为该连接创建适当的 SslContext。SslContextFactory 实现可以从文件系统目录或任何其他证书存储库(数据库、LDAP 注册表等)中查找证书。结合 NIO(在 4.0 中添加),这是在单个 JVM 进程中使用少量线程来处理许多客户端连接的好方法。
重大变更
大版本发布是一个进行一些清理(如上所示)和引入新功能的好时机。不幸的是,这些新功能有时会破坏现有 API。请振作起来,我们努力保持向后兼容,大多数应用程序不应受到这些更改的影响。如有疑问,请参阅发行版更改日志中的 专用部分。
总结
RabbitMQ 团队希望您喜欢这个新版本的 Java Client。请随时查阅 发行版更改日志 以获取所有详细信息。二进制文件一如既往地可以在 Maven Central 和我们的 Bintray 存储库 中找到。如果您使用 Maven,请添加以下依赖项以使用 RabbitMQ Java Client 5.0
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.0.0</version>
</dependency>
如果您使用 Gradle
compile 'com.rabbitmq:amqp-client:5.0.0'
尽情享受吧!
