Skip to content
dennis zhuang edited this page Jul 19, 2013 · 49 revisions

#Metaq release notes

##下载

##MetaQ 1.4.6.2更新日志:

1.服务器:

  • 修复dashboard的title显示错误的bug。

2.客户端,推荐已经升级到1.4.6.1的朋友升级到此版本,变更如下:

  • 修复Spring支持API无法运行在Spring 2.x版本的bug,感谢网友elvis.wangyi
  • 改进consumer负载均衡,减少产生重复消息的可能,降低重复性的重新负载均衡的次数。

##MetaQ 1.4.6.1更新日志:

1.新功能:

  • 新增com.taobao.metamorphosis.consumer.ConsumerMessageFilter接口,用于实现服务端和客户端的消息过滤,具体见Java客户端指南高级主题。消费者可以过滤消费特定的消息。
  • Dashboard支持RESTFul API,用于查询Broker信息,具体见Dashboard API
  • 新增com.taobao.metamorphosis.client.consumer.MessageIdCache接口,用于实现消费者的消息去重,防止重复消费,默认提供一个LRU的内存实现,具体见Java客户端指南高级主题

2.配置变更:

  • Topic配置,新增配置消费者的过滤器功能,类似group.xxxGroup=com.test.MyConsumerMessageFilter,用于配置特定消费分组的消息过滤器,具体见Java客户端指南高级主题

3.功能改进和Bug修复:

  • 修复Dashboard无法处理超过Integer.MAX_VALUE范围的offset的bug。
  • 改进支持Storm的MetaqSpout,使用回滚替代异常来回滚消息。
  • 将进程pid加入默认的consumer id。
  • 改进LocalOffsetStorage的实现,感谢网友横云断岭的建议。
  • 改进事务超时的异常提示。
  • 修复bug,具体见milestone

4.API变更:

  • 废弃com.taobao.metamorphosis.client.consumer.MessageIterator,推荐用com.taobao.metamorphosis.consumer.MessageIterator类。

5.依赖类库升级,quartz升级到2.1.7,gecko升级到1.1.4,zkclient升级到0.3版本等。

##MetaQ 1.4.5.1更新日志

小版本更新,主要解决客户端的问题,包括:

  • Spring API支持spring 2.5版本。
  • 允许MessageListenerContainer注入自定义的RejectConsumptionHandler。参见issue 64.
  • 改进consumer负载均衡,避免意外异常。

##MetaQ 1.4.5更新日志

1.新功能:

  • MetaQ终于有了一个Web管理平台,默认访问http://[host]:8120即可访问管理平台。使用管理平台可以查询本机和集群信息,查询Topic信息以及某个消费分组的消费信息,查询日志信息,重载配置文件等。P.S. 整个管理平台基于Clojure语言实现。
  • 大幅度改进XA事务实现(两阶段提交协议支持分布式事务),消除了原来无法运作在broker集群的限制。
  • 提供了全新的Spring框架支持API,简化Java客户端配置和编程,具体见Spring框架支持
  • 新增TopicBrowser API,用于遍历某个Topic下的所有消息。
  • 改动同步复制,在slave写入失败情况下将自动移除master,并且自动检测恢复。
  • 改进对Storm框架支持,升级spout支持storm 0.8 API。

2.API改进:

  • Message消息对象新增setRollbackOnly()方法,用于主动回滚消息。
  • ConsumerConfig消费者配置新增方法setConsumeFromMaxOffset(boolean always)用于设置是否每次consumer启动都从最新位置开始消费。
  • 新增分区选择器RandomPartitionSelector,用于随机发送消息。
  • 当消息发送失败,提供更详细的错误信息,包括服务器地址,分区号,topic等等。
  • XAMessageProducer新增setUniqueQualifier方法用于设置全局唯一标识符。
  • MessageSessionFactory新增方法createTopicBrowser用于创建TopicBrowser
  • Spring框架支持相关API。

3.配置和脚本变更:

  • 服务端新增配置项dashboardHttpPort用于设置web管理平台的HTTP端口,默认是8120端口。
  • 同步复制Master配置新增三个选项:
#发送到slave的消息超时时间,单位毫秒
sendToSlaveTimeoutInMills=2000
#发送到Slave消息连续失败次数阈值,超过这个数值将会自动把master从zookeeper移除并在后台做检测
#当检测slave成功恢复,将自动注册master到zookeeper。
slaveContinuousFailureThreshold=100
#检测slave恢复的时间间隔,单位毫秒。
checkSlaveIntervalInMills=100
  • Java客户端新增环境变量metaq.client.loopback.connection.enable,用于设置对于本机服务器,是否优先使用网络回路连接,节省带宽。默认不启用。
  • env.sh新增选项export enableHttp=false,用于设置服务端是否启用HTTP RESTFull接口。如果启用,用户可以通过HTTP方式发送或者消费消息。
  • 添加locaMetaServer.bat脚本,用于windows环境下启动内嵌zookeeper模式的MetaQ服务器。
  • 移除服务端diamond相关配置。

4.其他改进:

  • 提供了详细的Java客户端用户指南
  • 移除了一些不再需要的淘宝类库依赖。
  • 修复Javadoc乱码问题,新的文档看这个
  • 升级gecko到1.1.3版本,修复并发隐患。
  • 升级aviator到2.3.0版本。
  • 部分bug修复。
  • 改进分布式事务,改进spring框架支持例子。

5.升级指南:

  • 服务端和客户端都保持向前兼容。但是如果你是从1.4.3之前版本升级上来的,请先升级服务端,再升级客户端。
  • 服务端可无缝升级,如果你同一台机器跑了多个broker,需要明确配置每个broker的dashboardHttpPort,防止冲突。
  • 客户端也可以无缝升级,推荐使用Spring框架的朋友采用新API来简化编程。

##MetaQ 1.4.4-hotfix更新 1.服务端修复local模式启动无法创建临时目录的bug。

##MetaQ 1.4.4更新日志 1.配置变更:

  • 添加新选项stat,可设置全局是否开启实时统计,默认为false
  • 添加新选项updateConsumerOffsets,当消费者的offset不在Broker的数据范围内,是否强制更新消费者的offset为当前最大offset。默认为false。测试开发环境建议开启此选项,生产环境不建议。
  • 添加新选项loadMessageStoresInParallel,是否在启动的时候并行加载数据,提高启动速度,默认为false。

2.协议变更:

  • put协议添加checksum,服务端将根据checksum校验producer发送的消息数据是否完整。
  • sync协议新增checksum,类似put
  • stats协议新增reset和help命令,分别用于重设实时统计数据和打印帮助信息。

3.易用和稳定性改进:

  • 新增local模式启动服务器,它将启动一个内置的zookeeper服务器并启动metaq服务器,方便用户测试开发。生产环境仍然建议用单独的zookeeper集群。./metaServer.sh start local
  • 添加服务端启动时的配置参数校验,帮助检查配置错误。
  • metaServer.sh新增slave-status命令,用于查看异步复制状态。
  • 更优雅地关闭服务器,避免数据损坏。
  • 当服务器端列表变动的时候,尽量避免producer发送消息异常。
  • 当同步复制的slave服务端无法服务时,master服务器将尽快返回失败异常给producer。
  • 改进consumer的负载均衡实现,更快速和稳定地实现负载均衡。
  • 修复producer可能出现的连接内存泄漏。

4.性能改进:

  • 改进group commit实现

5.新功能,主要改进在Java客户端的API上:

  • Java客户端新增RejectConsumptionHandler接口,当消费消息尝试多次失败后将调用此接口的rejectConsumption方法处理。
  • Java客户端MessageConsumer接口新增setRejectConsumptionHandler方法用于设置拒绝消费处理器。
  • Message对象新增readOnly属性,可设置消息是否只读。在PartitionSelector的getPartition方法中,消息将强制为只读。
  • MessageListener接口的recieveMessages方法可抛出InterruptedException的受控异常,响应中断。当中断发生时正在消费的消息将被回滚。

6.其他:

  • 升级gecko到1.1.2版本,修复可能存在的并发错误。

7.升级指南:

  • 1.4.3版本的服务端和客户端,可直接升级到1.4.4,保持兼容;1.4.3之前版本的服务端和客户端,需首先升级服务端,等服务端完全升级完毕之后,才可开始升级客户端。

##Metaq 1.4.3 release notes

1.Impl a ruby client for metaq

2.Improved python client for metaq

3.Added two new options in server.ini: acceptPublish and acceptSubscribe to control whether the broker or topic can accept messages from producer or accept subscription from consumer. Note:these options only influence the new clients(1.4.3) behavior,old clients will not be influenced.

4.Make stopping broker more friendly by JMX instead of kill.

5.Other small changes: upgrade gecko to 1.1.1 and quartz to 2.1.4 version;internal refactoring and added integration test.

Metaq 1.4.2 release notes

1.Adds new api to get partitions for topic in MessageSessionFactory:

  public List<Partition> getPartitionsForTopic(String topic)

2.Copy new topics config from master to asynchronous slave broker automatically.A new option in async_slave.properties to control :

 autoSyncMasterConfig=true

3.Adds new api to get statistics from broker in MessageSessionFactory

  public Map<InetSocketAddress, StatsResult> getStats() throws InterruptedException;
  public Map<InetSocketAddress, StatsResult> getStats(String item) throws InterruptedException;
  public StatsResult getStats(InetSocketAddress target) throws InterruptedException;
  public StatsResult getStats(InetSocketAddress target, String item) throws InterruptedException;

4.Merge tools and server-wrapper projects,provide a powerful script metaServer.sh to manage broker.

5.Provides bat script to run broker on windows.

6.Adds a new contrib project meta-python -- metaq client for python,it only supports sending message now.

7.Adds a new stat item config,you can use stat config to get broker's config file content.

8.Other small changes,including statistics improvement etc.

Clone this wiki locally