Filter Server
RocketMQ 可以允许消费者上传一个java类给Filter Server进行过滤。
1.Filter Server只能起在Broker所在机器
2.可以有若干个Filter Server进程
3.可以拉取消息的时候,消息先经过Filter Server,Filter Server靠上传的JAVA类过滤消息后才推给Consumer.
4.客户端完全可以消费小弟时候做过滤,不需要Filter Server.
5. Filter Server 存在的目的是用Broker的CPU资源换去网卡资源。因为Broker的瓶颈往往在网卡,而且CPU资源很闲。在客户端过滤会导致无响应使用的消息在占用网卡资源。
6.使用JAVA类上传过滤表达式是一个双刃剑,一方面方便了应用的过滤操作节省网卡资源,另一方面也带来了服务器端的安全风险,这需要足够谨,消费端上传的class要保证过滤足够安全---例如在过滤程序里尽可能不做申请大内存,创建线程等操作,避免Broker服务器资源泄露。