2017-01-06 7 views
0

Я знаю, что свойства заголовков JMS чувствительны к регистру. Но я работаю над одним требованием, когда мне нужно сделать JMS selctor не чувствительным к регистру. Можно ли это сделать? Я использую верблюд, а ниже я определяю свой селектор в файле свойств.Можно ли сделать регистр селектора JMS нечувствительным?

accountQueue = ActiveMQqueueJmsComponent: очереди: счет Селектор = деньги <> ('доллар')

Camel маршрут:

@Value("${consumer.accountQueue}") 
    private String accountQueue; 


@Bean 
    RouteBuilder accountRouteBuilder() { 
     return new RouteBuilder() { 

     @Override 
     public void configure() throws Exception { 

      from(accountQueue).to(OrderService) 
      } 
      } 
     } 

Я пытался использовать функцию как UPPER и LOWER, но не в состоянии получить успех. Я отказываюсь, как показано ниже.

accountQueue = ActiveMQqueueJmsComponent:queue:account?selector=money <> UPPER('Dollar') // not working 
+0

[Статья] (http://stackoverflow.com/questions/31969274/apache-mq- jms-message-selector) может помочь вам решить ваш запрос. – Avadhut

ответ

0

Посмотрите вызовы функций в усилении селектора, который был добавлен в ActiveMQ в this JIRA issue. Используя это усовершенствование, вы сможете создать нечто, соответствующее вашим потребностям.

Это расширение позволяет для некоторых пользовательских вызовов функций, которые будут сделаны с несколько встроенных функций следующим образом:

Message message = createMessage(); 
    assertSelector(message, "REGEX('1870414179', SessionserverId)", false); 
    message.setLongProperty("SessionserverId", 1870414179); 
    assertSelector(message, "REGEX('1870414179', SessionserverId)", true); 
    assertSelector(message, "REGEX('[0-9]*', SessionserverId)", true); 
    assertSelector(message, "REGEX('^[1-8]*$', SessionserverId)", false); 
    assertSelector(message, "REGEX('^[1-8]*$', SessionserverId)", false); 

    assertSelector(message, "INLIST(SPLIT('Tom,Dick,George',','), name)", false); 
    assertSelector(message, "INLIST(SPLIT('Tom,James,George',','), name)", true); 

    assertSelector(message, "INLIST(MAKELIST('Tom','Dick','George'), name)", false); 
    assertSelector(message, "INLIST(MAKELIST('Tom','James','George'), name)", true); 

    assertSelector(message, "REGEX('connection1111', REPLACE(JMSMessageID,':',''))", true); 
+0

Спасибо @Tim Bish за ответ. однако я использовал ниже синтаксис, но пока не повезло. ActiveMQqueueJmsComponent: queue: account? Selector = money <> '"REGEX (^ [\ p {DOLLAR} \ p {доллар} ._-] * $)". Я думаю, что ссылка, которую вы публикуете, которая должна настраивать/применять функцию при селекторе при публикации. Но я ищу регулярное выражение во время сценария подписки. Ниже приводится способ, которым я подписываюсь из очереди (также показано в вопросе). –

Смежные вопросы