如何使Infinispan与骆驼一起工作

时间:2016-11-17 15:46:14

标签: java caching intellij-idea apache-camel infinispan

boxLid1

我的pom.xml如下所示

import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.infinispan.InfinispanConstants;
import org.apache.camel.component.jackson.JacksonDataFormat;
import org.apache.camel.model.dataformat.JsonLibrary;
import uk.co.sammy.model.Collection;

public class InfinispanRoute extends RouteBuilder {

    private JacksonDataFormat json = new JacksonDataFormat(Collection.class);

    @Override
    public void configure() throws Exception {
        from("file:src/data?noop=true&include=.*.json")
                .choice()
                .when()
                .jsonpath("$..CustInfo[?(@.firstName == 'Sammy')]").unmarshal(json)
                .log("Got customer data for ${body.custInfo.firstName}")
                .setHeader(InfinispanConstants.OPERATION, constant(InfinispanConstants.PUT_IF_ABSENT))
                .setHeader(InfinispanConstants.KEY, simple("${body.custInfo.firstName}"))
                .to("infinispan://localhost")
                .marshal().json(JsonLibrary.Jackson)
                .to("activemq:queue:incomingApplication", "activemq:queue:customerDetails");

        from("activemq:queue:incomingApplication")
                .setHeader(InfinispanConstants.OPERATION, constant(InfinispanConstants.GET))
                .setHeader(InfinispanConstants.KEY, constant("${body.custInfo.firstName}"))
                .to("infinispan://foo?cacheName=localCache")
                .setBody(simple("${header.CamelInfinispanOperationResult}"))
                .to("activemq:output");
    }
}

我已经尝试了三天让这个简单的示例代码与Infinispan一起使用REdhat入门指南并下载快速入门zip来运行但仍然无效!我不断收到Spring JMS的错误“无法连接到foo:11222 ”或“池未打开”,然后发出关于混合Uber和Jars版本的警告。我开始使用ehcache,这是一个很难实现,因为有限的简单示例显示如何存储,检索和清除休息调用等缓存。现在,我需要这个工作,所以我可以轻松地将其迁移到Openshift但仍然不行!每次重新启动项目时,我都会遇到不同的错误。请逐步设置Infinispan使用我的上述代码工作的任何帮助将非常感谢。谢谢你们!

P.S:我已经阅读了Redhat数据网格入门页面,并按照他们的指示进行操作,然后再作为我的最后一招!

2 个答案:

答案 0 :(得分:3)

使用“infinispan:// localhost”uri格式将尝试连接到Infinispan服务器。要使用嵌入式缓存,您应该使用类似“infinispan://?cacheName = localCache”

答案 1 :(得分:1)

我在您提供的示例中看到了一些错误:

第一条路线:

  • 您应该使用InfinispanConstants.VALUE设置要放入缓存的值

第二条路线:

  • 您应该使用第一条路由使用相同的缓存(即相同的缓存名称)
  • 您应该使用simple来设置InfinispanConstants.KEY