速记两笔,RabbitMQ 3.0的一些 Breaking Change.
 
 
Mirror queue policies
 
   还记得之前是怎样创建镜像队列的么?x-ha-policy [Link]在新版本,使用这个参数不会报错但是已经镜像不会再生效.替换方案是使用policies.这样修改的动因是:无法在运行时状态判断哪些队列是镜像队列,新方案是把镜像队列也做到配置里面.同样支持运行时管理,比如:
 
rabbitmqctl set_policy HA '^(?!amq\.).*' '{"ha-mode": "all"}'

 

[1] Mirrored Queue 的新文档 http://www.rabbitmq.com./ha.html
[2] rabbitmqctl 新增的方法 http://www.rabbitmq.com/parameters.html
 
 
New federation
 
   federation配置有较大变化.x-federation exchange type不复存在,替换方案是使用类似Mirrored queue的policy.这样变更的理由是:应用程序不应该知道federation的事情,应该隐藏掉这部分信息.  对于已经使用federation的应用迁移可以使用rabbitmq_federation配合修改rabbitmq.config完成

 

rabbitmq-plugins disable rabbitmq_federation

 

rabbitmq-plugins enable rabbitmq_old_federation

 

 
New Clustering
 
   还记得创建RabbitMQ集群的那几板斧么?rabbitmqctl cluster命令修改为 rabbitmqctl join_cluster,而且不必先调用rabbitmqctl reset ,不必枚举所有的节点 如果列出多个节点,就会与多个节点组成集群,是dick node还是RAM node可以通过 --disc --ram指定集群角色,默认是disc node.这个真的比以前的集群构建方式清晰多了.
 
 
frame_max
 
   新版本如果client发送的frame比协商的frame_max值大,Rabbitmq会直接断开该client的链接.这样做的原因是:有问题的client可能发送非常大的frame导致服务器内存耗尽.默认值是128kb,配置文件说明文档链接
 
 
JSON-RPC
 
  management plugin侦听端口修改为15672.JSON_RPC侦听端口修改为15670.修改的动因是避开 ephemeral port 
  STOMP plugin依然使用61313端口.
 
expiration property
  
   要支持消息粒度的过期控制就需要在消息属性上附加过期时间,填写一个可以解析为整形的字符串.
 
 
Map<String, Object> args = new HashMap<String, Object>();
args.put("x-message-ttl", 60000);
channel.queueDeclare("myqueue", false, false, false, args);

 

了解详情,还是去官网:
 
 
 
最后小图一张 关于如何思考 如何解决问题 如何倾听: