2015-10-29 73 views
1

這裏是編解碼器數據格式配置:如何配置Apache Camel端口轉發路由?

package com.chorke.boot.jproxy.config; 

import org.apache.camel.component.hl7.HL7DataFormat; 
import org.apache.camel.component.hl7.HL7MLLPCodec; 
import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.context.annotation.ImportResource; 

@Configuration 
@ImportResource({"classpath*:/META-INF/camel/applicationContext-camel.xml"}) 
public class ApacheCamelConfig { 

    @SuppressWarnings("unused") 
    private static final Logger log = LoggerFactory.getLogger(ApacheCamelConfig.class); 

    @Bean 
    public HL7MLLPCodec hl7codec() { 
     HL7MLLPCodec hl7codec = new HL7MLLPCodec(); 
     hl7codec.setCharset("UTF-8"); 
     return hl7codec; 
    } 

    @Bean 
    public HL7DataFormat hl7Format() { 
     HL7DataFormat hl7Format = new HL7DataFormat(); 
     return hl7Format; 
    } 
} 

這裏是端口轉發路線:

package com.chorke.boot.jproxy.route; 

import org.apache.camel.builder.RouteBuilder; 
import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 

public class ProxyRoute extends RouteBuilder { 

    private static final Logger log =LoggerFactory.getLogger(ProxyRoute.class); 

    @Override 
    public void configure() throws Exception { 

     from("mina2://tcp://0.0.0.0:22210?codec=#hl7codec&sync=true").process(new Processor() { 
      public void process(Exchange exchange) throws Exception { 
       String body = exchange.getIn().getBody(String.class); 
       log.info("Port-Forwarded body:\n {}", body); 
      } 
     }).to("mina2://tcp://192.168.0.10:22210?codec=#hl7codec&sync=true").end(); 

     from("mina2://tcp://0.0.0.0:22211?codec=#hl7codec&sync=true").process(new Processor() { 
      public void process(Exchange exchange) throws Exception { 
       String body = exchange.getIn().getBody(String.class); 
       log.info("Port-Forwarded body:\n {}", body); 
      } 
     }).to("mina2://tcp://192.168.0.11:22211?codec=#hl7codec&sync=true").end(); 

    } 
} 

路線夏日是:

============================================ 
    request     forwarded 
tcp ip:port    tcp ip:port 
============================================ 
0.0.0.0:22210   192.168.0.10:22210 
0.0.0.0:22211   192.168.0.11:22211 
============================================ 

它工作正常,它的協議特定於MLLP。但是我們的目標是不管協議的路由如何發送任何請求。可以說它可以處理任何類型的請求,不限於HTTP,REST,SOAP,,SMTP,,SMB等。請您幫助我們配置端口轉發路由,而不管它們的協議如何。

回答

0

Apache Camel中不支持協議檢測和路由端口轉發。你最好找到一些可以做到這一點的現有產品。