使用Spring和Apache Camel在ActiveMQ中获取JSON数据

时间:2013-04-18 12:44:36

标签: spring activemq apache-camel

我对此很新,但我想从此网址中检索json文件:https://builds.apache.org/job/Accumulo-1.5/api/json

我想把这个网址放在我的ActiveMQ中 我的代码如下所示:

<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="
   http://www.springframework.org/schema/beans 
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
   http://camel.apache.org/schema/spring 
   http://camel.apache.org/schema/spring/camel-spring.xsd">

<bean id="jms" class="org.apache.camel.component.jms.JmsComponent">
    <property name="connectionFactory">
        <bean class="org.apache.activemq.ActiveMQConnectionFactory">
            <!--Link naar activemq-->
            <property name="brokerURL" value="tcp://localhost:61616"/>
        </bean>
    </property>
</bean>

<bean id="downloadLogger" class="camelinaction.DownloadLogger"/>

<camelContext xmlns="http://camel.apache.org/schema/spring">
    <dataFormats>
    <json id="json" library="Jackson"/>
    </dataFormats>

    <route>
        <from uri="jetty:https://builds.apache.org:443/job/Accumulo-1.5/api/json"/>
        <process ref="downloadLogger"/>
        <to uri="jms:TestQueue"/>
    </route>
    <route>
        <from uri="jms:TestQueue"/>
        <process ref="downloadLogger"/>
        <to uri="file:src/result"/>
    </route>
</camelContext>

</beans>

队列正在运行。我试图将xml文件放入队列中,这不是问题。 但是,我的路由配置的输入是指向现有URL的链接。

这可能吗?如果是的话,我的错是什么?

提前致谢。

1 个答案:

答案 0 :(得分:1)

使用Java DSL代替Spring DSL修复它。

解决方案:

@Component
public class AccumoloToJmsRouteBuilder extends SpringRouteBuilder {

  @Override
  public void configure() throws Exception {

    from("timer://foo?fixedRate=true&delay=0&period=2000&repeatCount=1")
        .setHeader(Exchange.HTTP_METHOD, constant("GET"))
        .to("https://builds.apache.org:443/job/Accumulo-1.5/api/json")
        .convertBodyTo(String.class)
        .to("myProcessor")
        .log(LoggingLevel.DEBUG, "com.project", "HTTP GET response body: ${body}")
        .to("activemq://TestQueue");


  }
}