Hi Devs,
I have now refined the topology filters in messaging component:
Each topology filter has an apply() method and it accepts a set of filter
properties:
/**
* Returns true if member is excluded else returns false.
* @param lbClusterId load balancer cluster id of the member
* @param networkPartitionId network partition id of the member
* @return
*/
public static boolean apply(String lbClusterId, String networkPartitionId) {
boolean excluded = false;
if(getInstance().isActive()) {
if (StringUtils.isNotBlank(lbClusterId) &&
getInstance().lbClusterIdExcluded(lbClusterId)) {
excluded = true;
}
if (StringUtils.isNotBlank(networkPartitionId) &&
getInstance().networkPartitionExcluded(networkPartitionId)) {
excluded = true;
}
if (excluded && log.isDebugEnabled()) {
log.debug(String.format("Member is excluded: [lb-cluster]
%s", lbClusterId));
}
}
return excluded;
}
How to apply in a message processor:
// Apply member filter
if(TopologyMemberFilter.apply(member.getLbClusterId(),
member.getNetworkPartitionId())) {
return false;
}
Thanks
--
Imesh Gunaratne
Technical Lead, WSO2
Committer & PMC Member, Apache Stratos