RabbitMQ 3.5.5 正式发布,此版本除了常规的 bug 修复之外,提升了队列页面信息到磁盘的速度。 UPDATE 2:新 RPM 和 Debian 包已经附在发行说明里面,主要修复了两个回退问题: #321; Thanks to Emilien Macchi (@EmilienM), Denis Egorenko (@degorenko) and Kostikas Tom for reporting the issue! #325; Thanks to @CVTJNII for the patch! UPDATE 1:移除了 RPM 和 Debian 包,因为一个 shell 脚本包括一个 Bash 行。 服务器 功能增强 Improve performance when a queue's journal is written to disk (rabbitmq/rabbitmq-server#227, rabbitmq/rabbitmq-server#289). Improve performance when a queue is purged (rabbitmq/rabbitmq-server#295). Introduce new options to tune the queue paging performance (rabbitmq/rabbitmq-server#284). These are low-level settings and should be handled carefully. Here are the default values: %% In /etc/rabbitmq/rabbitmq.config[ {rabbit, [ {msg_store_credit_disc_bound, {2000, 500}}, {msg_store_io_batch_size, 2048}, {credit_flow_default_credit, {200, 50}} ]} ]. Improve performance when expired messages need to be removed and no dead-letter exchange has been set up, by grouping handling of delivers and ack (rabbitmq/rabbitmq-server#308). Add an option to disable file_handle_cache's read cache (rabbitmq/rabbitmq-server#226). This read cache was reported to be a performance penalty, especially when a starting RabbitMQ slave needs to synchronize and fetch messages from a master node. We now offer an option to disable this cache and we plan to disable it by default in RabbitMQ 3.6.0. Here is how to use this new option: %% In /etc/rabbitmq/rabbitmq.config[ {rabbit, [ {fhc_read_buffering, false} ]} ]. The queue_index_embed_msgs_below parameter is now read once from the application environment when the queue is created, instead of every time it is needed (rabbitmq/rabbitmq-server#291). This removes a bottleneck by avoiding synchronous calls to the Erlang application server. Reduce default heartbeat interval from 580 to 60 seconds (rabbitmq/rabbitmq-server#297). This is a more sensible default value, after considering what users usually do. Force essential TCP options (rabbitmq/rabbitmq-server#282), especially {reuseaddr, true}. User won't have to copy them when tuning TCP options anymore and this decreases the risk of errors. Catch SIGTERM and other signals in the rabbitmq-server script to stop RabbitMQ gracefully (rabbitmq/rabbitmq-server#234). This mostly targets Docker users. Thanks to Duncan Gordon (@dunk) for reporting the issue! Honor !RABBITMQ_BASE! value for the default location of rabbitmq-env-conf.bat (rabbitmq/rabbitmq-server#239). Thanks to Jared Kauppila (@Jakauppila) for the patch! Warn user if a 32-bit Erlang runtime is used (rabbitmq/rabbitmq-server#251), due to the limited address space and the possible memory shortage. Bug 修复 Fix a queue hang when a slave node is lost (rabbitmq/rabbitmq-server#224). Thanks to John Eckersberg (@jeckersb) for reporting the issue! Fix a crash during startup when RabbitMQ tries to clean non-existing bindings (rabbitmq/rabbitmq-server#235). Thanks to Magnus Henoch (@legoscia) for the patch! Support backticks in the password field when adding a user with rabbitmqctl on Unix (rabbitmq/rabbitmq-server#313). Thanks to Ben Page (@ben-page) for the patch! Fix how NODE_IP_ADDRESS and NODE_PORT are handled in rabbitmq-env.bat on Windows (rabbitmq/rabbitmq-server#243, rabbitmq/rabbitmq-server#288). This bug made it impossible to override TCP listen port, for example. Since RabbitMQ 3.5.4. Thanks to @sukinsky for reporting the problem and Jared Kauppila (@Jakauppila) for the patch! Fix a problem in gen_server2 causing calls to timeout under certain conditions (rabbitmq/rabbitmq-server#268). Thanks to Feng Lee (@erylee) for the patch! Support old version of GNU sed (rabbitmq/rabbitmq-server#273). Since RabbitMQ 3.5.2. Thanks to Nishan Naseer (@nishan) for the patch! 插件:Federation Bug 修复 Fix a crash when certain headers are already present in the forwarded message (rabbitmq/rabbitmq-federation#12). Increase reconnection delay from 1 to 5 seconds (rabbitmq/rabbitmq-federation#15). This reduces the noise in the SASL log file. Ignore federation-specific headers added by clients (rabbitmq/rabbitmq-federation#16). 插件:Management UI 功能增强 Do not consider non-UTF-8 content as invalid (rabbitmq/rabbitmq-management#48). Now, the plugin just mentions why it cannot display it. Split long Base64 content in multiple lines (rabbitmq/rabbitmq-management#49). Bug 修复 Fix a bug with rounding moving averages (rabbitmq/rabbitmq-management#35). 插件:MQTT 功能增强 Coerce default_user, default_pass, exchange and vhost to Erlang binaries (rabbitmq/rabbitmq-mqtt#32). 插件:STOMP 增强 Set the redelivered header to a boolean value (rabbitmq/rabbitmq-stomp#21). Properly propagate extensions headers (x-headers) in the SUBSCRIBE and SEND frames (rabbitmq/rabbitmq-stomp#16). Bug 修复 Duplicate subscription IDs no longer result in unhandled exceptions. 客户端库:Java 功能增强 Use JUnit 4 in the testsuite (rabbitmq/rabbitmq-java-client#89). Bug 修复 Stop recovery when a client is closed (rabbitmq/rabbitmq-java-client#77). Make connection handshake timeout configurable (rabbitmq/rabbitmq-java-client#81, rabbitmq/rabbitmq-java-client#92). 客户端库:.NET Bug 修复 Handle ObjectDisposed exceptions gracefully when re-scheduling timers (rabbitmq/rabbitmq-dotnet-client#118). Do not throw exceptions from a Dispose method (rabbitmq/rabbitmq-dotnet-client#119) 升级:http://www.rabbitmq.com/clustering.html#upgrading 下载: rabbitmq-server-3.5.5-3.noarch.rpm rabbitmq-server-3.5.5-3.src.rpm rabbitmq-server-3.5.5-3.suse.src.rpm rabbitmq-server-3.5.5.exe rabbitmq-server-3.5.5.tar.gz rabbitmq-server-3.5.5.zip rabbitmq-server-windows-3.5.5.zip rabbitmq-server_3.5.5-3_all.deb RabbitMQ 是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成,因此也是继承了这些优点。 AMQP 里主要要说两个组件:Exchange 和 Queue (在 AMQP 1.0 里还会有变动),如下图所示,绿色的 X 就是 Exchange ,红色的是 Queue ,这两者都在 Server 端,又称作 Broker ,这部分是 RabbitMQ 实现的,而蓝色的则是客户端,通常有 Producer 和 Consumer 两种类型: RabbitMQ 3.5.5 正式发布,AMQP 消息服务器下载地址