Class SqlRuleFilter
- Direct Known Subclasses:
FalseRuleFilter,TrueRuleFilter
A SqlRuleFilter holds a SQL-like condition expression that is evaluated in the broker against the arriving
messages' user-defined properties and system properties. All system properties (which are all properties explicitly
listed on the ServiceBusMessage class) must be prefixed with sys. in the condition expression. The
SQL subset implements testing for existence of properties (EXISTS), testing for null-values (IS NULL), logical
NOT/AND/OR, relational operators, numeric arithmetic, and simple text pattern matching with LIKE.
Sample: Create SQL rule filter with SQL rule action
The code sample below creates a rule using a SQL filter and SQL action. The rule matches messages with:
ServiceBusMessage.getCorrelationId()equal to"email"ServiceBusMessage.getApplicationProperties()contains a key"sender"with value"joseph"ServiceBusMessage.getApplicationProperties()contains a key"importance"with value *"joseph"OR the value is NULL.
If the filter matches, it will set/update the "importance" key in
ServiceBusMessage.getApplicationProperties() with "critical".
String topicName = "emails";
String subscriptionName = "important-emails";
String ruleName = "emails-from-joseph";
RuleFilter sqlRuleFilter = new SqlRuleFilter(
"sys.CorrelationId = 'email' AND sender = 'joseph' AND (importance IS NULL OR importance = 'high')");
RuleAction sqlRuleAction = new SqlRuleAction("SET importance = 'critical';");
CreateRuleOptions createRuleOptions = new CreateRuleOptions()
.setFilter(sqlRuleFilter)
.setAction(sqlRuleAction);
RuleProperties rule = client.createRule(topicName, ruleName, subscriptionName, createRuleOptions);
System.out.printf("Rule '%s' created for topic %s, subscription %s. Filter: %s%n", rule.getName(), topicName,
subscriptionName, rule.getFilter());
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionSqlRuleFilter(String sqlExpression) Creates a new instance with the given SQL expression. -
Method Summary
Modifier and TypeMethodDescriptionbooleanCompares this RuleFilter to the specified object.Gets the value of a filter expression.Gets the SQL expression.inthashCode()Returns a hash code for this SqlRuleFilter, which is the hashcode for the SqlExpression.toString()Converts the value of the current instance to its equivalent string representation.
-
Constructor Details
-
SqlRuleFilter
Creates a new instance with the given SQL expression.- Parameters:
sqlExpression- SQL expression for the filter.- Throws:
NullPointerException- ifsqlExpressionis null.IllegalArgumentException- ifsqlExpressionis an empty string.
-
-
Method Details
-
getParameters
Gets the value of a filter expression. Allowed types: string, int, long, bool, double- Returns:
- Gets the value of a filter expression.
-
getSqlExpression
Gets the SQL expression.- Returns:
- The SQL expression.
-
toString
Converts the value of the current instance to its equivalent string representation. -
equals
Compares this RuleFilter to the specified object. The result is true if and only if the argument is not null and is a SqlRuleFilter object that with the same parameters as this object. -
hashCode
public int hashCode()Returns a hash code for this SqlRuleFilter, which is the hashcode for the SqlExpression.
-