Как настроить маршрут Servlet to HazelCast с помощью Camel

Я хочу построить маршрут что-то вроде

<route>
  <from uri="servlet:///user?matchOnUriPrefix=true"/>
  <to uri="direct:put"/>
</route>

<route>
<from uri="direct:put"/>
<setHeader headerName="CamelHazelcastOperationType">
<constant>put</constant>
</setHeader>
<to uri="hazelcast:map:foo"/>
</route>

т. е. все, что соответствует POST:/user/{cachename}/{key1}, должно принимать key1 в качестве ключа и помещать полезную нагрузку под key:key1 в map:{cachename}.

То же самое для

GET:/user/{cachename}/{key1} должен принять {key1} в качестве ключа и получить полезную нагрузку под key1 из map:{cachename}.

Любая помощь будет высоко оценена.

Спасибо,


person remo    schedule 09.12.2013    source источник


Ответы (1)


У вас должно быть несколько заголовков Camel, доступных из входящего сервлета, например:

  • CamelHttpMethod = ПОЛУЧИТЬ
  • CamelHttpPath = /user/{имя_кэша}/{key1}

Вы можете использовать код или язык выражений для извлечения информации оттуда, очень простой пример:

<setHeader headerName="cachename">
    <simple>${header.CamelHttpPath.split("/")[2]}</simple>
</setHeader>

<setHeader headerName="key1">
    <simple>${header.CamelHttpPath.split("/")[3]}</simple>
</setHeader>
person bgossit    schedule 10.12.2013
comment
Привет, Bgossit, это действительно помогло, но я застрял с некоторым исключением сериализации с использованием компонента hazelcast в верблюде. ​​Можете ли вы пролить свет на следующий пост: stackoverflow.com/questions/20511545/ - person remo; 11.12.2013