多消费者(多线程)对MNS的使用

  • 时间:
  • 浏览:0

这里亲们儿可不时需利用监控线程中的存活线程数量从而来,进行报警。

从而保证了,无论new出2个个MessageReceiver,都在从同另有四个 Map,取出的lockObj。在使用lockObj中,均使用同步锁synchronized,从而实现了LongPolling的排他机制,非要另有四个 线程在做LongPolling,一些线程都在Wait。处置了上百个线程共同访问MNS Server,另有四个 Group只会产生,一根 长连接进行长轮询。

可不时需将图中的Group,比作一台台服务器,而上端的多个Consumer,实际否则启动的多个消费线程。

在MessageReceiver中,官方定义了另有四个

在阿里云MNS消费者的使用中,阿里云提供了使用 消息服务-最佳实践-长轮询 ,官方肯能提供了源代码和删剪说明,我在这里就不贴代码了,主要说明其中的原理。

可不时需将你你是什么封装成另有四个 API接口,通过监控你你是什么API来进行报警。

在阿里云MNS消费者的使用中,阿里云提供了使用 消息服务-最佳实践-长轮询

的代码和说明,在处置方案中阿里云都没人说道

这里我提供本身比较好的方式,可不时需利用spring IOC容器的依赖注入,来管理和启动多个消费者(线程)。

否则怎么启动1-N个线程,共同产生多个消费者,并都没人给出说明,阿里云官方提供的demo中是使用在main方式中启用:

Spring会通过依赖注入的方式,来管理关联对象的生命周期,什么都亲们儿可不时需将消费者的产生管理,都由Spring IOC容器代劳,也否则说,我把消费者创建的控制权都交给Spring容器。方式如下

亲们儿将消费者的产生方式,在类中的构造函数中定义,使用另有四个 固定大小的线程,来管理消费者(线程),共同换成Component注解,在项目启动时,Spring 的就会实例化你你是什么类,注入到容器中,你你是什么之后构造方式中的,多个消费者就会启动开始英语 英文工作。

在上端代码中,使用了另有四个 固定大小的线程来管理多个线程(消费者),否则一旦子线程死亡,你你是什么线程(消费者),无须会重启,你你是什么情况就会产生队列积压。产生线程死亡一定是不正常,线程中的Bug处在。比如,有异常都没人捕获到,肯能在子线程中将异常throw出,就会使当前子线程死亡掉。你你是什么情况一定是会有的,肯能都没人人写出的代码是完美无缺的,线程员非要尽肯能处置bug的产生,什么都亲们儿时时需完善的日志和监控来完善,亲们儿的项目。

在开了上百个线程共同访问的情况下,肯能队列里肯能都没人消息了,都没人我我觉得不时需上百个线程都共同挂LongPolling。只时需有1-N个线程挂LongPolling就足够了。挂LongPolling的线程在发现队列里有消息时,可不时需唤醒一些线程共同来归还息以达到快速响应的目的

Receiver内控 做了LongPolling的排他机制,我希望有另有四个 线程在做LongPolling,都没人一些线程只时需Wait就可不时需了。 —— [处置方案]