Я пытаюсь использовать pollEnrich для получения указанного c сообщения от конечной точки на основе значения JMSCorrelationID . Я нашел много старых постов, в которых указывалось, что pollEnrich не поддерживает это, но согласно последнему руководству pollEnrich теперь поддерживает динамические c urls Руководство по верблюдам для pollEnrich .
Однако я не могу заставить его работать в моем коде с помощью селектора, и я не уверен, является ли это проблемой синтаксиса или я делаю что-то еще неправильно. Первоначально у меня было это использование значения Dynami c в селекторе, но я даже не могу заставить его работать со значением c.
Фрагмент кода моего маршрута:
<route id="receive_start">
<from uri="direct:receive_start"/>
<pollEnrich>
<simple>seda:resources?selector=JMSCorrelationID%3D'1234'</simple>
</pollEnrich>
<recipientList>
<simple>direct:respond_end</simple>
</recipientList>
</route>
Когда я передаю сообщение по этому маршруту, я получаю следующую ошибку:
Failed delivery for (MessageId: ID-1582783414063-0-11 on ExchangeId: ID-1582783414063-0-10). Exhausted after delivery attempt: 1 caught: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: seda://resources?+selector=JMSCorrelationID+%3D+%271234%27 due to: Failed to resolve endpoint: seda://resources?+selector=JMSCorrelationID+%3D+%271234%27 due to: There are 1 parameters that couldn't be set on the endpoint. Check the uri if the parameters are spelt correctly and that they are properties of the endpoint. Unknown parameters=[{selector=JMSCorrelationID = '1234'}]
Без селектора я могу получить из конечной точки ресурсов, но мне нужно иметь возможность получить конкретное c сообщение из этой конечной точки из всех имеющихся там.
Более широкий контекст здесь заключается в том, что я обрабатываю сообщение, а затем сохраняю копию в другая конечная точка, чтобы более поздние сообщения могли извлечь ее, если требуется извлечь из нее дополнительную информацию для собственной обработки.