У меня действительно плохие времена, когда тело сообщения превращается в pojo во время вызова.
У меня есть очень простой маршрут, определяемый с демаршалингом тела в мой пользовательский pojo:
<dataFormats>
<json id="json" library="Jackson" unmarshalTypeName="com.trumin.domain.model.result.Result" />
</dataFormats>
<camel:route>
<camel:from
uri="activemq:topic:result?clientId=sswric_01&durableSubscriptionName=sendSMSWhenResultIsCalculated" />
<marshal ref="json" />
<bean beanType="com.trumin.communications.sms.TimeResultSMSSender"
method="sendTextToUserAfterTimeResultBeingSaved(${body})" />
</camel:route>
</camelContext>
the method I'm trying to invoke here:
sendTextToUserAfterTimeResultBeingSaved(Result r);
получает параметр типа Result, как определено в формате данных json, и не вызывается при доставке сообщения.
Если я изменю подпись метода, чтобы принять строку вместо результата:
sendTextToUserAfterTimeResultBeingSaved(String s);
затем он вызывается, и строка содержит json-представление результата.
Есть ли способ, которым то, чего я пытаюсь достичь, работает?
Я также попытался удалить спецификацию ($ {body}) из маршрута, я пробовал другие немаршалированные библиотеки, я пробовал читать все учебники по верблюдам и ссылки на привязку параметров, я читал большую часть верблюда в главы действий по этому поводу, но до сих пор не могу найти свой ответ.