AMQP 消息服务器,RabbitMQ 3.4.0 发布
jopen 10年前
基于Erlang的高级消息队列RabbitMQ 3.4.0发布.新产品系列。2014-10-21。之前版本2014-08-11的3.3.5.遗留产品3.2.4/3.1.5 在高级消息队列里,RabbitMQ应该最主流的。
此版本的新特性主要有:
1. RPC客户端快速应答机制。
2. 可监控和限制队列字节长度。
3. 无须重启即可激活或卸下插件。
4. 可从持久化数据中恢复崩溃队 列。
5. 允许.Net客户端网络中断后自动重连。
6. 缺省不再支持SSL V3防止POODLE攻击。
7. SSL握手超时可配置。
8. 新的rabbitmq-plugins set子命令。
完全改进:
Release: RabbitMQ 3.4.0 Security Fixes ============== management plugin ----------------- 26414 do not trust X-Forwarded-For header when enforcing 'loopback_users' various ------- 26419 disable SSLv3 by default to prevent the POODLE attack Release Highlights ================== server ------ bug fixes 26354 prevent force_event_refresh message from killing connections that have not fully started (since 3.3.0) 26347 ensure bindings are deleted when deleting queue records as part of rabbitmqctl forget_cluster_node (since 3.0.3) 26341 add assertions to prevent silent failure from DETS errors in rabbit_recovery_terms (since 3.3.0) 26171 prevent crash in rare conditions in gm:find_member_or_blank/2 during slave startup (since 2.6.0) 26368 prevent autoheal from hanging when loser shuts down before the winner learns it is the winner (since 3.1.0) 25850 prevent excessive binary memory use when accepting or delivering large messages at high speed (since 1.0.0) 26230 ensure exchanges and queues are federated appropriately when created when policy exists to make them so but the plugin is not enabled (since 3.0.0) 26389 prevent consumer utilisation getting stuck at 0% after busy queue goes idle (since 3.3.0) 26370 prevent "rabbitmqctl cluster_status" from breaking the database if invoked at the wrong point during first startup (since 3.0.0) 26295 ensure "rabbitmqctl wait" waits for plugins to start 26336 fix logging when cluster auto-config fails (since 3.0.0) 26338 log enotconn as 'connection_closed_abruptly', not an internal error (since 1.0.0) 26343 fix warning about missing behaviour_info/1 in supervisor2 with older Erlang (since 3.2.0) 26363 ensure cluster auto-config does not try to cluster with nodes which have had "rabbitmqctl stop_app" invoked (since 3.0.0) 26378 fix compilation warnings about conflicting behaviours (since 2.6.0) 26386 ensure broker starts even if vhost pointed to by default_vhost config item has been deleted (since 1.0.0) 26404 prevent queue synchronisation from hanging if there is a very short partition just as it starts (since 3.1.0) enhancements 21446 allow crashing queue processes to recover, using persistent data if present 25813 provide fast direct route for RPC replies (see http://www.rabbitmq.com/direct-reply-to.html) 24926 allow plugins to be enabled / disabled without restarting the server 25884 add argument and policy to limit queue length in bytes 26150 prevent clean master shutdown from promoting unsynchronised slaves and thus losing messages; add ha-promote-on-shutdown to configure 26151 make queues located on down cluster nodes visible in "rabbitmqctl list_queues" 26213 prevent undefined behaviour during partial partitions by promoting them to full ones 26254 allow "rabbitmqctl_forget_cluster_node" to promote mirror queue slaves that are down and thus recover from loss of a node containing masters after it was the last node to stop 26256 add "rabbitmqctl force_boot" command to allow administrator to override RabbitMQ's idea of the last node to shut down 26307 add messages_{ready,unacknowledged}_ram / messages_ram / messages_persistent queue info keys 25666 / 26339 add message_bytes / message_bytes_{ready,unacknowledged, ram,persistent} queue info keys 25214 improve robustness in the face of stray messages from Mnesia after partitions 25279 make SSL handshake timeout configurable 25678 make mnesia table loading timeout configurable 26148 add username and vhost to amqp_error log messages 26169 add username / connection information to firehose trace messages 26242 improve clarity of rabbitmqctl error messages when stop_app has been invoked 26225 provide connection age in rabbitmqctl list_connections 25446 add "rabbitmq-plugins set" subcommand 25824 / 26398 provide a summary of binary memory use 26397 split out memory used by slaves vs masters / unmirrored in the memory summary 26401 split out memory used by connection readers / writers / channels / other in the memory summary 26192 improve usability of "rabbitmqctl remove_cluster_node --offline" by not requiring the user to start a node with RABBITMQ_NODE_ONLY 18626 add RABBITMQ_USE_LONGNAME (with thanks to Marcos Diez) 26204 allow message TTL and queue expiry times above (2^32)-1 milliseconds 26211 fix use of type specifications deprecated in Erlang 17 26366 improve error messages when queue / exchange equivalence checks fail 26387 use new strange way to determine OTP minor version number 26394 add cluster heartbeat messages at a faster rate than net_ticktime 26406 add environment for plugins and non-RabbitMQ apps to "rabbitmqctl environment" 25848 warn if RABBITMQ_SERVER_ERL_ARGS set in a way that will lead to poor performance 25454 warn if rabbitmq-plugins and rabbitmq-server disagree on the location of the enabled_plugins file 26221 improve performance of queue.declare{nowait=true} building & packaging -------------------- enhancements 26344 ensure missing config file is correctly logged in .deb / RPM (since 3.3.0) 26154 switch standalone OS X build to use Erlang 17.1 26040 add missing BuildRequires to RPM spec (since 1.8.0) 26411 fix warning on Debian build clean due to deleted files management plugin ----------------- enhancements 26107 provide (and default to) mode where we maintain message rates only per object (queue, exchange etc) not per object pair (queue->channel etc) to save memory 26174 improve responsiveness of management API under load 25329 maintain history and draw charts for some per-node stats (memory, disk space etc) 25470 provide UI to show / hide series in charts in the web UI 26382 provide UI to show / hide columns columns in the web UI 26225 provide connection age in connection list 25824 provide a summary of binary memory use 26151 make queues located on down cluster nodes visible in queue list 23724 provide API to list all consumers 26340 redesigned, more concise interface for queue / exchange / policy arguments 26193 display locations of configuration, database and logs in management 26193 detect and warn on mismatched net_ticktime setting 26235 show enabled plugins in management 25984 switch to HTML5 local storage where available, ensure multiple web UIs on same host do not share login 26358 support setting message properties with "rabbitmqadmin publish" 26390 ensure all charts have the same time range 26391 make "rabbitmqadmin list" restrict to a default set of columns bug fixes 26399 ensure statistics do not depend on erlang:now/0 being in sync with os:timestamp/0 (since 3.2.0) shovel plugin ------------- enhancements 26239 allow dynamic shovels to set message properties like static ones do, and allow static shovels to use add_forward_headers like dynamic ones do LDAP plugin ----------- enhancements 26275 support LDAP connections using StartTLS (requires Erlang R16B03 or later) tracing plugin -------------- enhancements 26357 add milliseconds to timestamps STOMP plugin ------------ enhancements 26306 add flow control for message deliveries through STOMP; greatly reduces memory use when slow consumers without prefetch-count connect to a large / fast moving queue 26243 ensure all stomp-named queues are named "stomp-*" 26266 support "requeue" header on NACK frames MQTT plugin ----------- enhancements 26330 add flow control for message deliveries through MQTT; greatly reduces memory use when slow consumers without prefetch-count connect to a large / fast moving queue bug fixes 26356 fix incorrect reporting of MQTT protocol version when using MQTT 3.1.1 Web-STOMP plugin ---------------- enhancements 26392 don't depend on the SockJS CDN java client ----------- enhancements 26402 provide a means to configure the time given to slow consumers to continue consuming internally queued messages after the connection closes 26359 add listeners for queue name changes during recovery 26207 add APIs to make methods easier to use in nowait mode 26121 add --randomRoutingKey flag to PerfTest 26091 add --consumerRate flag to PerfTest 26348 make ConnectionFactory's networkRecoveryInterval property into a long bug fixes 26364 clean up client-side references to auto-deleted queues in the common case (since 3.3.0) 26374 limit size of WorkPool queues, thus prevent slow consumer with no prefetch limit from consuming unbounded memory (since 2.7.0) 26413 prevent duplicate connection recovery listeners from being registered (since 3.3.0) dependency change 26095 drop support for Java 1.5 licencing change 24543 make the Java client additionally avaliable under the ASL2 .net client ----------- enhancements 26130 automatic connection recovery similar to that of the Java client 26208 add APIs to make methods easier to use in nowait mode 26324 introduce an interface for ConnectionFactory 26334 set up stream timeouts as early as possible (thanks to John Oliver) 26199 allow IO and heartbeat to be background threads 25525 allow Subscription class to set explicit consumer tag 26097 add support for nack / reject in Subscription 26122 remove unnecessary lock in Subscription feature removal 26131 / 26132 remove support for versions of AMQP prior to 0-9-1 26133 remove redirect following erlang client ------------- enhancements 26166 allow default ssl options to be provided in the configuration file bug fixes 26418 ensure writer death is detected in direct connections (since 3.2.0) (with thanks to Christopher Faulet) 26346 ensure amqp_rpc_client uses exclusive, autodelete response queues (since 1.3.0)
下载:http://www.rabbitmq.com/releases/rabbitmq-server/v3.4.0/rabbitmq-server-3.4.0.tar.gz
RabbitMQ 是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成,因此也是继承了这些优点。
AMQP 里主要要说两个组件:Exchange 和 Queue (在 AMQP 1.0 里还会有变动),如下图所示,绿色的 X 就是 Exchange ,红色的是 Queue ,这两者都在 Server 端,又称作 Broker ,这部分是 RabbitMQ 实现的,而蓝色的则是客户端,通常有 Producer 和 Consumer 两种类型:
来自:http://www.oschina.net/news/56345/rabbitmq-3-4-0-final