j2ee绿洲

找到属于自己的一片天空
数据加载中……
metamorphosis-9-最佳实践
客户端最佳实践
    复用MessageSessionFactory,最好作为全局单例来使用。
生产者最佳实践
  •     尽量复用MessageProducer,最好也是使用单例。可以单个MessageProducer发送多个topic,或者多个MessageProducer每个发送一种topic,尽量减少重复创建producer。
  •     消息data的序列化方式锦衣不要使用特定语言的序列化方式(如java序列化),可以考虑 自定义协议、json、protocolbuffer、hessian等序列化协议,以便跨语言消费。
  •     实现发送顺序所需要的PartitionSelector,推荐使用业务id。如:交易订单id来取模,分区列表选择固定分区发送。    
  •     单条消息大小最好限制在100k以下。
  •     如无顺序等特殊需求,不要实现自己的PartitionSelector,默认的轮询策略足够。
消费者最佳实践
  •     尽量复用MessageConsumer,最好也是使用单例。可以单个MessageConsumer订阅多种topic,或者多个MessageConsumer每个订阅一种topic,尽量减少重复创建consumer。
  •     单次拉取的数据不宜过大。如果对消息实时性要求较高的应用,应将单次拉取的数据缩小,但至少要大于单条消息的大小。如果对吞吐量要求较高,可以将该值设置大一些。
  •     假设消费过程非常轻量级(如:只是打印log),可以不设置MessageListener线程池,减少资源耗费。
  •     假设消息发送量巨大,消费能力不高,可适当提高拉取消息线程数 fetchRunnerCount和MessageListener的线程池大小。
  •     尽量在消息的消费过程中,扑捉所有异常,减少消息在本地的堆积和恢复,前提是不要遗漏消息。如确实无法处理,请主动抛出异常,以便重试。

posted on 2012-11-19 15:53 心情经纬 阅读(587) 评论(0)  编辑  收藏 所属分类: 消息队列专题


只有注册用户登录后才能发表评论。


网站导航: