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");
}
}
Мой pom.xml выглядит нижеКак сделать Infinispan работу с верблюдом
<properties>
<activemq.version>5.14.1</activemq.version>
<camel.version>2.18.0</camel.version>
<infinispan.version>8.3.0.Final-redhat-1</infinispan.version>
<camel-jbossdatagrid.version>6.6.1.Final-redhat-1</camel-jbossdatagrid.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
<version>${camel.version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-jackson</artifactId>
<version>${camel.version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-jsonpath</artifactId>
<version>${camel.version}</version>
</dependency>
<dependency>
<groupId>org.infinispan</groupId>
<artifactId>infinispan-embedded</artifactId>
<version>${infinispan.version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-jbossdatagrid</artifactId>
<version>${camel-jbossdatagrid.version}</version>
</dependency>
<!--ActiveMQ -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-camel</artifactId>
<version>${activemq.version}</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
<version>${activemq.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.10</version>
</dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-all</artifactId>
<version>5.1</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>fuse-release</id>
<name>jboss Release Repository</name>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<url>http://repo.fusesource.com/nexus/content/groups/public/</url>
</repository>
</repositories>
</project>
Я пытался в течение трех дней, чтобы получить этот простой пример кода для работы с Infinispan помощью RedHat руководство по началу работы и скачал быстрый запуск zip для запуска, но все равно не сработает! Я продолжаю получать ошибку «не может подключиться к foo: 11222» или «пул не открыт» весной JMS, затем предупреждение о смешивании версии Uber и Jars. Я начал использовать ehcache, что было больно для реализации из-за ограниченных простых примеров, которые показывают, как хранить, извлекать и очищать кеш от остальных вызовов и т. Д. Теперь мне нужно, чтобы это работало, поэтому я могу легко перенести его в Openshift, но все же не будет работать! Каждый раз, когда я перезапускаю проект, я получаю разные ошибки. Пожалуйста, помогите шаг за шагом настроить Infinispan для работы с использованием моего выше кода, будет СЕРЬЕЗНО оценено. Спасибо, парни!
P.S: Я прочитал начальную страницу данных Redhat и выполнил их инструкции, прежде чем делать это в качестве своего последнего средства !!!
Я попробовал это, и это до сих пор не работает. :(Я получаю этот _org.infinispan.client.hotrod.RemoteCacheManager start_, и он просто висит там обработкой кода. У меня запущен сервер Infinispan, но он не может использовать _.addServer() _, поскольку это всегда отмечено red и не может найти зависимость от maven, чтобы решить это. – Sammy65
Мне все еще не ясно, если вы хотите использовать встроенный или клиент/серверный режим. –
Я использовал режим клиент/сервер, но я пошел другой путь от кода выше, потому что я хотел работать с кешем как отдельный процесс, хотя он был интегрирован с маршрутизацией с использованием объявления bean. Почему у меня была эта проблема, потому что я использовал новую версию клиента для версии сервера. – Sammy65