我在调用时将消息正文解组为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>
我在这里尝试调用的方法是:
sendTextToUserAfterTimeResultBeingSaved(Result r);
接收json数据格式中定义的Result类型的参数,消息传递时不会调用该参数。
如果我修改方法签名以接受字符串而不是结果:
sendTextToUserAfterTimeResultBeingSaved(String s);
然后它被调用,字符串包含结果json表示。
有没有什么方法可以让我努力实现的目标发挥作用?
我还尝试从路由中删除 (${body}) 规范,我尝试过其他非编组库,我尝试阅读所有 Camel 教程和参数绑定链接,我已经阅读了大多数关于此的 Camel 在行动章节,但仍然找不到我的答案。
最后...这修复了它:
<camelContext xmlns="http://camel.apache.org/schema/spring">
<camel:dataFormats>
<camel:json id="jsonToResult" library="Jackson" unmarshalTypeName="com.trumin.domain.model.result.Result" />
</camel:dataFormats>
<camel:route>
<camel:from
uri="activemq:topic:result?clientId=sswric_01&durableSubscriptionName=sendSMSWhenResultIsCalculated" />
<camel:unmarshal ref="jsonToResult" />
<camel:bean beanType="com.trumin.communications.sms.TimeResultSMSSender"
method="sendTextToUserAfterTimeResultBeingSaved" />
</camel:route>
</camelContext>
我的测试处理器: 所以我有下一种情况:1)骆驼成功地从“test-camel-start”队列读取消息2)基处理器成功地处理消息3)在重试将消息传递到“test-camel-success”时失败 我收到了下一个日志跟踪: Log说“请求必须包含参数MessageBody”。 我不知道为什么这个消息体没有出现。
我有一个bean,它有一个构造对象列表的方法。我想从POJO的这个列表中生成一个json和jackson。 然后在我的骆驼路线中,我想从我的bean方法生成json。这里我做了什么,似乎不起作用 camel返回一个UUID不带扩展名且内容为NULL的文件。伙计们,我错过了什么!?
我目前正在尝试熟悉Servicemix、Camel、CXF等,我的问题与四年前的一些人基本相同:如何将Camel中的BeaninJournal对象转换为消息正文和标题?不幸的是,答案对我帮助不大。正如其中一个答案所提到的:Camel网站上的所有示例都与从CXF向bean发送内容有关。 我在POJO中使用了一个bean代理endpoint,通过 当我在另一端使用另一个beanendpoint,为该接
我将我的Fabric8 Spring Boot Camel pom.xml升级到使用Camel 2.16.0,但并非所有组件都在2.16.0中可用 我不得不将以下组件保留在2.15.3,因为我得到了2.16.0版本的“丢失项目”: 骆驼指标 骆驼jsonpath 骆驼Spring靴 这些在Camel 2.16.0中不可用吗? 我使用的是Fabric8版本2.2.46和Spring Boot版本1.
我知道有一些方法可以捆绑应用程序并将其部署在Tomcat或Jetty中。但是,如果我这样做了,最大的问题就变成了如何与Restlet集成。 我做了进一步的挖掘。我举了骆驼附带的一个tomcat例子。然后我试着让它具有RESTLET功能。差不多管用了。现在的问题是参数没有传递到路由。我希望当调用这个服务器:http://x.x.x.x.x:8080/rs/user/?name=Paul时,我会得到:
我刚刚开始将Apache Camel用于集成项目。我正在使用将对象持久化到mysql,但mybatisendpoint无法通过以下Trace消息解析: 2016-07-19 15:50:15跟踪事件助手:800-通知者:org。阿帕奇。骆驼impl。DefaultRuntimeEndpointRegistry@5847e0b4未为事件启用:由于未能在以下位置创建路由route1,无法启动Camel