【问题标题】:How to configure route for port forwarding by Apache Camel?如何配置 Apache Camel 端口转发的路由?
【发布时间】:2015-10-29 04:15:50
【问题描述】:

这是编解码器数据格式的配置:

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 的特定协议。但我们的目标是路由任何请求,而不管它们的协议。可以说它可以处理任何类型的请求,不限于HTTPRESTSOAPMLLPSMTPFTPSMB 等。请您帮助我们配置端口转发路由,不管他们的协议。

【问题讨论】:

    标签: java spring apache-camel mina


    【解决方案1】:

    Apache Camel 中没有对协议检测和路由端口转发的开箱即用支持。你最好找到一些可以做到这一点的现有产品。

    【讨论】:

      猜你喜欢
      • 2016-09-29
      • 1970-01-01
      • 1970-01-01
      • 2019-01-04
      • 2016-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-01
      相关资源
      最近更新 更多