RabbitMQ 3.5.0 发布,AMQP 消息服务器

简介:

RabbitMQ 3.5.0 发布了,RabbitMQ 是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成,因此也是继承了这些优点。

AMQP 里主要要说两个组件:Exchange 和 Queue (在 AMQP 1.0 里还会有变动),如下图所示,绿色的 X 就是 Exchange ,红色的是 Queue ,这两者都在 Server 端,又称作 Broker ,这部分是 RabbitMQ 实现的,而蓝色的则是客户端,通常有 Producer 和 Consumer 两种类型:


<a href=https://yqfile.alicdn.com/a9ef2c91d3929938102986c1e1404946eeaea95d.png" >
改进记录包括:

Release: RabbitMQ 3.5.0

Release Highlights
==================

server
------
bug fixes
26527 Prevent huge GM / slave memory consumption under load by adding flow
      control to messages via GM (since 2.6.0)
26636 Fix inconsistencies and hangs when a node comes back online before its
      disappearance is fulled treated (since 3.1.0)
26622 Ensure channels don't deliver confirms when a pause mode lasts (since
      3.3.5)
26628 When using autoheal, ensure the leader waits for the winner to finish
      the autoheal process (since 3.3.0)
26467 Fix promotion of offline slaves, in particular if the slave crashed
      (since 3.4.0)
26631 Work around a possible hang in Erlang's "global" (since 3.4.2)
26614 Ensure rabbitmqctl.bat exits with code 1 if ERLANG_HOME is incorrect
      (since 1.0.0)
26426 Ensure epmd is restarted on Windows if it ends up running as a normal
      user and thus getting killed on logout (since 1.0.0)
26595 Fix a crash when querying SSL certificate info while the connection is
      closing (since 2.1.1)
26610 Restore the timeout error message while waiting for other cluster nodes
      (since 3.4.0)
26477 Only send 'user_authentication_success' event if
      rabbit_reader:auth_phase/2 accepts the user (since 3.3.0)

enhancements
26183 Move priority queues from an external plugin to the broker
26327 Embed messages smaller than a configurable size in the queue index
26457 Add read buffer cache to improve on-disk messages consumption
26543 Improve I/O performance by reading or writing several file segments
      in one operation
26465 New "pause_if_all_down" partition handling mode
26463 Ensure new mirrors are started when old ones go down when ha-mode=exactly
26469 Support separate authentication/authorization backends
26475 Add "rabbitmqctl rename_cluster_node"
25430 Further limit queue's journal size to avoid excessive memory use
26545 Prohibit deletion of amq.* exchanges
26393 Add more info to "user_authentication_*" events
26444 Improve performance parsing AMQP tables / arrays
26602 Add routing decision information to firehose messages
26615 Notify systemd when RabbitMQ is started, if "sd_notify" is available
26603 Improve unacked messages requeueing performance in priority queues
26427 Silence connection errors from load balancer sanity checks
26471 Log when HiPE is enabled

feature removal
26257 Remove support for the legacy (2.x compatible) form of the
      "cluster_nodes" configuration directive


management plugin
-----------------
bug fixes
26613 Fix exception on the node details page if the node goes
      online or offline while viewing (since 3.4.0)

enhancements
26522 Provide statistics about accesses to message store and queue index
24781 Provide statistics about file I/O
24921 rabbitmqadmin: Support Python 3
25652 Add a "move messages" UI
26561 Show per-queue disk message read/write rates
26598 Show cross-cluster networking statistics
26621 Display a warning when the management database is overloaded
24700 Support if-unused and if-empty for queue / exchange deletion


LDAP plugin
-----------
bug fixes
26601 Ensure tag_queries respects other_bind setting


MQTT plugin
-----------
enhancements
26278 Support authentication via SSL certificate


Web-STOMP plugin
----------------
enhancements
26504 Add configuration parameter for cowboy connection pool size


tracing plugin
--------------
enhancements
26619 Improve how logs are written to disk to increase performance
26620 Allow tracing plugin to truncate message bodies to increase performance


java client
-----------
bug fixes
26576 Make sure Channel#abort ignores IOExceptions as the docs say

enhancements
26571 Undeprecate QueueingConsumer
26617 Dynamically calculate number of consumer work service executor threads

feature removal
26007 Remove deprecated ConnectionFactory#getNumConsumerThreads,
      ConnectionFactory#setNumConsumerThreads, BasicProperties setters (in
      favour of BasicProperties.Builder) and Channel#recoveryAsync


.net client
-----------
bug fixes
26508 Synchronise SessionManager Count method (since 3.3.5)

enhancements
24699 Add a unit test to ensure channels are notified when a connection is
      closed
26329 Dispatch consumer methods concurrently
26420 Move the .NET guide to www.rabbitmq.com
26459 Use timer for heartbeats to reduce the number of threads and memory
      consumption
26483 Add ISubscription and IQueueingBasicConsumer interfaces
26505 Upgrade to Visual Studio 2013 project files
26507 Use a static exchange types array instead of creating a new list each
      time (since 3.3.5)
26509 Switch to auto-properties (since 3.3.5)
26510 Use a separate lock object in BlockingCell (since 3.3.5)
26511 Assorted doc string and member name prefix changes (since 3.3.5)
26512 Use EventHandler<T> and similar instead of homebrew event handler
      classes (since 3.3.5)
26513 Improve how authentication method names and URI schemas are compared in
      ConnectionFactory (since 3.3.5)
26514 Use TryParse instead of Parse in PrimitiveParser (since 3.3.5)
26534 Remove MSI installer
26550 Support TLS connections without client certificates


building and packaging
----------------------
bug fixes
26539 Use "exec" to run rabbitmq-server in rabbitmq-script-wrapper to ensure
      signals are correctly propagated (since 2.8.3)
26524 Improve error message when build dependencies are missing on Mac OS X
      (since 3.1.0)
26525 Do not install rabbitmq.config.example if DOC_INSTALL_DIR is unset
      (since 3.2.0)
26526 Replace GNU patch specific "--no-backup-if-mismatch" by a portable
      combination of patch(1) and find(1) (since 3.4.0)


Upgrading
=========
To upgrade a non-clustered RabbitMQ from release 2.1.1 or later, simply install
the new version. All configuration and persistent message data is retained.

To upgrade a clustered RabbitMQ from release 2.1.1 or later, install the new
version on all the nodes and follow the instructions at
http://www.rabbitmq.com/clustering.html#upgrading .

To upgrade RabbitMQ from release 2.1.0, first upgrade to 2.1.1 (all data will be
retained), and then to the current version as described above.

When upgrading from RabbitMQ versions prior to 2.1.0, the existing data will be
moved to a backup location and a fresh, empty database will be created. A
warning is recorded in the logs. If your RabbitMQ installation contains
important data then we recommend you contact support at rabbitmq.com for
assistance with the upgrade.

文章转载自 开源中国社区 [http://www.oschina.net]

相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
6月前
|
消息中间件 缓存 物联网
MQTT常见问题之MQTT发送消息到阿里云服务器被拒如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
3月前
|
传感器 网络协议 物联网
手把手教你在 Windows 环境中搭建 MQTT 服务器
手把手教你在 Windows 环境中搭建 MQTT 服务器
298 0
|
6月前
|
NoSQL 关系型数据库 MySQL
涉及rocketMQ,jemeter等性能测试服务器的安装记录
涉及rocketMQ,jemeter等性能测试服务器的安装记录
72 1
|
6月前
|
消息中间件 存储 RocketMQ
RocketMQ源码分析之事务消息实现原理下篇-消息服务器Broker提交回滚事务实现原理
RocketMQ源码分析之事务消息实现原理下篇-消息服务器Broker提交回滚事务实现原理
|
4月前
|
消息中间件 物联网 API
消息队列 MQ使用问题之如何在物联网项目中搭配使用 MQTT、AMQP 与 RabbitMQ
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
5月前
|
IDE 物联网 网络性能优化
什么是MQTT?如何使用ESP12F芯片连接到MQTT服务器
通过上述步骤,你可以成功地使用ESP12F模块连接到MQTT服务器,发布和订阅消息。MQTT的轻量级和高效性使其非常适合各种物联网应用,而ESP12F模块的强大功能和低成本使其成为实现这些应用的理想选择。
204 0
|
5月前
|
消息中间件 Java
Java一分钟之-RabbitMQ:AMQP协议实现
【6月更文挑战第11天】RabbitMQ是基于AMQP协议的开源消息队列服务,支持多种消息模式。本文介绍了RabbitMQ的核心概念:生产者、消费者、交换器、队列和绑定,以及常见问题和解决方案。例如,通过设置消息持久化和确认机制防止消息丢失,配置死信队列处理不可消费消息,以及妥善管理资源防止泄漏。还提供了Java代码示例,帮助读者理解和使用RabbitMQ。通过理解这些基础和最佳实践,可以提升RabbitMQ在分布式系统中的可靠性和效率。
129 0
Java一分钟之-RabbitMQ:AMQP协议实现
|
5月前
|
消息中间件 Serverless 网络性能优化
消息队列 MQ产品使用合集之客户端和服务器之间的保活心跳检测间隔是怎么设置的
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
5月前
|
消息中间件 存储 Java
后端开发Spring框架之消息介绍 同步异步 JMS AMQP MQTT Kafka介绍
后端开发Spring框架之消息介绍 同步异步 JMS AMQP MQTT Kafka介绍
41 0
|
6月前
|
消息中间件 存储 JSON
服务器的异步通信——RabbitMQ2
服务器的异步通信——RabbitMQ
56 0
下一篇
无影云桌面