mirror of https://github.com/apache/activemq.git
AMQ-5933 - add test and fix
This commit is contained in:
parent
3ee84a17fb
commit
3c2ed9352b
|
@ -76,15 +76,17 @@ public class SelectorAwareVirtualTopicInterceptor extends VirtualTopicIntercepto
|
|||
|
||||
if (cache != null) {
|
||||
final Set<String> selectors = cache.getSelector(dest.getActiveMQDestination().getQualifiedName());
|
||||
for (String selector : selectors) {
|
||||
try {
|
||||
final BooleanExpression expression = getExpression(selector);
|
||||
matches = expression.matches(msgContext);
|
||||
if (matches) {
|
||||
return true;
|
||||
if (selectors != null) {
|
||||
for (String selector : selectors) {
|
||||
try {
|
||||
final BooleanExpression expression = getExpression(selector);
|
||||
matches = expression.matches(msgContext);
|
||||
if (matches) {
|
||||
return true;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
LOG.error(e.getMessage(), e);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
LOG.error(e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -578,6 +578,23 @@ public class TwoBrokerVirtualTopicSelectorAwareForwardingTest extends
|
|||
|
||||
}
|
||||
|
||||
public void testSelectorNoMatchInCache() throws Exception {
|
||||
clearSelectorCacheFiles();
|
||||
|
||||
// have the cache ignoreWildcardSelectors
|
||||
final BrokerService brokerA = brokers.get("BrokerA").broker;
|
||||
((SubQueueSelectorCacheBrokerPlugin)brokerA.getPlugins()[0]).setIgnoreWildcardSelectors(true);
|
||||
|
||||
startAllBrokers();
|
||||
|
||||
ActiveMQDestination consumerBQueue = createDestination("Consumer.B.VirtualTopic.tempTopic", false);
|
||||
|
||||
MessageConsumer nonMatchingConsumer = createConsumer("BrokerA", consumerBQueue, "foo = 'bar%'");
|
||||
|
||||
ActiveMQTopic virtualTopic = new ActiveMQTopic("VirtualTopic.tempTopic");
|
||||
sendMessages("BrokerA", virtualTopic, 1, asMap("foo", "notBar"));
|
||||
}
|
||||
|
||||
private HashMap<String, Object> asMap(String key, Object value) {
|
||||
HashMap<String, Object> rc = new HashMap<String, Object>(1);
|
||||
rc.put(key, value);
|
||||
|
|
Loading…
Reference in New Issue