1 消息过滤的方式
1、简单消息过滤。订阅时指定topic下面tags;
2、高级消息过滤。
2.1)Broker所在的机器会启动多个FilterServer过滤进程;
2.2)Consumer启动后,会向FilterServer上传一个过滤的Java类;
2.3)Consumer从FilterServer拉消息,FilterServer将请求转发给Broker,FilterServer从Broker收到消息后,按照Consumer上传的java过滤程序做过滤,过滤完成后返回给Consumer。
这两种方式的总结:
1)使用CPU资源来换取网卡流量资源;
2)FilterServer与Broker部署在同一台机器,数据通过本地回环通信,不走网卡;
3)一台Broker部署多个FilterServer,充分利用CPU资源,因为单个JVM难以全面利用高配的物理机CPU资源;
4)因为过滤代码使用Java编写,应用几乎可以做任意形式的服务器端消息过滤,例如通过Messgae Header进行过滤,甚至可以按照Message Body进行过滤;
5)使用Java语言进行作为过滤表达式是一个双刃剑,方便了应用的过滤操作,但是带来了服务器端的安全风险。需要应用来保证过滤代码安全,例如在过滤程序中尽可能不做申请大内存,创建线程等操作,避免Broker服务器发生资源泄露。
2 客户端寻找NameServer地址的方式
1、代码