|
Copyright © 2010 Caringo, Inc.All rights reserved 8Version 2.2December 2010The example above is a good starting point, but it, alone, will not perform the filtering required forthis example. In order to select the PrimaryDR cluster as the destination of some of the locallystored streams, we want to find all streams whose content metadata contains a header called"DX Storage-priority" whose value starts with either a "1", a "2" or one of the words "high" or"medium". Note that the header name is not case sensitive but the actual header value with a matchexpression is case sensitive. Here is a select rule that uses a filter with a matches() expression thatwould accomplish this:matches('\s*[12].*|\s*[Hh]igh.*|\s*[Mm]edium.*')A select clause specifies a pattern for a single set of data to be retrieved by the Subscriber processby name. The select can contain zero or more filter clauses. If there are multiple filter clauses,then all of them must match a stream’s metadata before the stream is published. As in HTTP, theorder of headers within the metadata is not significant. If there are multiple headers in the streammetadata with the given header-name, then any of them can match the given pattern in order for theselect to execute. If there are no filter clauses, then the select matches any and every stream, as inthe following:The root tag for a set of DX Content Router rules is called rule-set, which can contain one or morepublish tags as shown above. The example rule set below will replicate all high and medium prioritystreams to the PrimaryDR cluster and all others to the SecondaryDR cluster. It will also also sendall streams whose Content-Disposition header does not contain a file name ending with ".tmp" to theBackup cluster.matches('\s*[12].*|\s*[Hh]igh.*|\s*[Mm]edium.*')not matches('.*filename\s*\=.*\.tmp.*')Notice that a rule-set can contain multiple publish clauses, and each publish clause can containmultiple select clauses. The Filter Rules Engine evaluates all content elements for each publish PreviousNext |