Multithreading 从活动MQ提高数据包处理速率

Multithreading 从活动MQ提高数据包处理速率,multithreading,web-services,activemq,packet,consumer,Multithreading,Web Services,Activemq,Packet,Consumer,我正在使用活动MQ存储机制来处理UDP数据包。一个UDP数据包处理程序正在侦听UDP数据包,并将其插入配置的4个队列中。我有一个消费程序,它通过创建4个线程从这4个队列中消费。每个线程处理数据包并插入数据库,然后调用一个Web服务来执行各种功能,然后只处理下一个数据包。我的问题是,在某些日子里,获取数据包的频率非常高,消费者的消费速度不快,而且排队。然而,在排队时间和非排队时间中,数据包的Web服务处理时间是相同的,几乎恒定为50毫秒 因此,在这段时间内,我将不得不停止Web服务并恢复问题。当我

我正在使用活动MQ存储机制来处理UDP数据包。一个UDP数据包处理程序正在侦听UDP数据包,并将其插入配置的4个队列中。我有一个消费程序,它通过创建4个线程从这4个队列中消费。每个线程处理数据包并插入数据库,然后调用一个Web服务来执行各种功能,然后只处理下一个数据包。我的问题是,在某些日子里,获取数据包的频率非常高,消费者的消费速度不快,而且排队。然而,在排队时间和非排队时间中,数据包的Web服务处理时间是相同的,几乎恒定为50毫秒

因此,在这段时间内,我将不得不停止Web服务并恢复问题。当我停止Web服务时,退出队列的速度很快。但是我想使用webservice的所有功能,处理速度也应该很高。由于这个排队问题,我最近将Q的数量从4增加到6,并且在一段时间内恢复了我的问题。但是,当数据包的数量越来越大时,就会发生排队,并且处理速度不会越来越快

请建议我如何解决这个问题


感谢您抽出时间。

我无法完全理解问题:消费者是否在处理发送给他们的消息时速度太慢?或者ActiveMQ代理速度不够快?消息排队有什么问题?您是否需要保证50毫秒的处理时间?你排除了数据库的瓶颈吗?我有6个Q,相应地,一个消费程序的6个线程正在从Q中消耗(一个线程对应一个Q)。一个线程所需的最小平均处理时间为150毫秒。我不能把处理时间减少到一个延长。那么我该如何解决这个问题呢?增加线程数(Q数)会有帮助吗?如果所有线程都在同一台机器上运行,并且您希望减少处理时间,那么增加线程数量的唯一帮助设置是,如果线程在处理过程中的某个时间点等待。我不认为你是这样。是的,每个线程都有一个webservice调用,这需要一些时间。因此,你的瓶颈是webservice调用,而不是使用消息的线程数。你得试着快点打电话。