一、阿里云官网---帮助文档 https://help.aliyun.com/document_detail/29536.html?spm=5176.doc29535.6.555.WWTIUh https://help.aliyun.com/document_detail/29553.html 按照官网步骤,创建Topic、申请发布(生产者)、申请订阅(消费者) 二、代码 1、配置: ONSADDR 阿里云用 公有云生产,测试用公网 不同的业务可以设置不同的tag,但是如果发送消息量大的话,建议新建TOPIC 2、生产者 方式1: 配置文件:producer.xml 启动方式1,在使用类的全局里设置: PS:最近发现一个坑,如果producer用上面这种方式启动的话,一旦启动的多了,会造成fullGC,所以可以换成下面这种注解方式启动,在用到的地方手动start、shutdown 方式2:配置类(不需要xml) PS:经过这次双11发现,以上2种方式在大数据量,多线程情况下都不太适用, 性能很差,所以推荐用3 方式3:(不需要xml) spring配置 方式1投递消息代码: 方式2投递消息代码:(可以每发1000个启动/关闭一次) 方式3:投递消息 发送消息的代码一定要捕获异常,不然会重复发送。 这里的TOPIC用自己创建的,elevenMessage是要发送的内容,我这里是自己建的对象 3、消费者 配置启动类: CID和ONSADDR一点要选对,用自己的,消费者线程数等可以在这里配置 创建消息监听器类,消费消息: 注意,由于消费者是多线程的,所以对象要用static+set注入,把对象的级别提升到进程,这样多个线程就可以共用,但是无法调用父类的方法和变量 消费者状态可以查看消费者是否连接成功,消费是否延迟,消费速度等 重置消费位点可以清空所有消息 三、注意事项 1、发送的消息体 最大为256KB 2、消息最多存在3天 3、消费端默认线程数是20 4、如果运行过程中出现java挂掉或者cpu占用异常高,可以在发送消息的时候,每发送1000条让线程休息1s 5、本地测试或启动的时候,把ONSADDR换成公网,不然报错无法启动 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。 |
|