100 lines
4.5 KiB
Java
100 lines
4.5 KiB
Java
package com.release11;
|
|
|
|
import com.mysql.cj.jdbc.MysqlDataSource;
|
|
import com.release11.Processors.*;
|
|
import generated.ObjectFactory;
|
|
import org.apache.activemq.ActiveMQConnectionFactory;
|
|
import org.apache.camel.*;
|
|
import org.apache.camel.builder.RouteBuilder;
|
|
import org.apache.camel.component.jackson.JacksonDataFormat;
|
|
import org.apache.camel.component.jms.JmsComponent;
|
|
import org.apache.camel.impl.DefaultCamelContext;
|
|
import org.apache.camel.support.SimpleRegistry;
|
|
import org.apache.log4j.BasicConfigurator;
|
|
import org.apache.camel.converter.jaxb.JaxbDataFormat;
|
|
|
|
|
|
public class Main {
|
|
|
|
public static void main(String[] args) throws Exception {
|
|
|
|
//to("log:?level=INFO&showHeaders=true&showBody=true")
|
|
|
|
MysqlDataSource source = new MysqlDataSource();
|
|
String jacek = "jdbc:mysql://10.101.111.19:3306/camel_db";
|
|
source.setURL(jacek);
|
|
source.setUser("root");
|
|
source.setPassword("admin");
|
|
SimpleRegistry registry = new SimpleRegistry();
|
|
registry.bind("source", MysqlDataSource.class, source);
|
|
|
|
CamelContext context = new DefaultCamelContext(registry);
|
|
BasicConfigurator.configure();
|
|
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://10.101.111.19:8088");
|
|
connectionFactory.setUserName("admin");
|
|
connectionFactory.setPassword("admin");
|
|
context.addComponent("activemq", JmsComponent.jmsComponentAutoAcknowledge(connectionFactory));
|
|
|
|
context.addRoutes(new RouteBuilder() {
|
|
@Override
|
|
public void configure() throws Exception {
|
|
|
|
JaxbDataFormat xmlDataFormat = new JaxbDataFormat();
|
|
xmlDataFormat.setContextPath("generated");
|
|
JacksonDataFormat jacksonDataFormat = new JacksonDataFormat(ObjectFactory.class);
|
|
jacksonDataFormat.setPrettyPrint(true);
|
|
errorHandler(deadLetterChannel("activemq:queue:dead?transferExchange=true").maximumRedeliveries(3).redeliveryDelay(5000));
|
|
|
|
from("direct:start")
|
|
.setBody(constant("SELECT * FROM material"))
|
|
.to("jdbc:source")
|
|
.split(body())
|
|
.to("activemq:queue:RawMaterial");
|
|
//?acknowledgementModeName=CLIENT_ACKNOWLEDGE
|
|
|
|
from("direct:getPackages")
|
|
.setHeader("material_id", simple("${body[id]}"))
|
|
.setBody(simple("SELECT * FROM package WHERE material_id = :?material_id"))
|
|
.to("jdbc:source?useHeadersAsParameters=true");
|
|
|
|
from("activemq:queue:RawMaterial?acknowledgementModeName=CLIENT_ACKNOWLEDGE")
|
|
.enrich("direct:getPackages", new MergeAggregator())
|
|
.process(new ValidatorProcess())
|
|
.choice()
|
|
.when(simple("${exchangeProperty[ean]}"+" == false")).marshal(xmlDataFormat).to("activemq:queue:BadEan")
|
|
.when(simple("${exchangeProperty[dimension]}"+" == false")).marshal(xmlDataFormat).to("activemq:queue:BadDimension")
|
|
.otherwise().marshal(xmlDataFormat).to("activemq:topic:Material")
|
|
.to("log:?level=INFO&showBody=true");
|
|
|
|
from("activemq:topic:Material?clientId=4&subscriptionDurable=true&subscriptionName=NAZWA")
|
|
.filter().xpath("//material_type='A1' or //material_type='A2' or //material_type='A3'")
|
|
.to("activemq:queue:FilteredType");
|
|
|
|
from("activemq:queue:FilteredType")
|
|
.unmarshal(xmlDataFormat)
|
|
.process(new XMLProcess())
|
|
.marshal(jacksonDataFormat)
|
|
.to("http:10.101.111.19:1080/api/json/material");
|
|
|
|
from("activemq:topic:Material?clientId=5&subscriptionDurable=true&subscriptionName=NAZWA_DELETED")
|
|
.filter().xpath("//is_deleted='false'")
|
|
.to("activemq:queue:FilteredIsDeleted");
|
|
|
|
from("activemq:queue:FilteredIsDeleted?acknowledgementModeName=CLIENT_ACKNOWLEDGE")
|
|
.unmarshal(xmlDataFormat)
|
|
.process(new CSVProcess())
|
|
.to("sftp:test@10.101.111.19:2222/upload/test?password=admin");
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
context.start();
|
|
ProducerTemplate template = context.createProducerTemplate();
|
|
template.sendBody("direct:start", null);
|
|
|
|
Thread.sleep(50000);
|
|
context.stop();
|
|
}
|
|
} |