簡體   English   中英

簡單的Apache Camel SNMP陷阱

[英]Simple Apache Camel SNMP trap

我是Apache Camel的新手,正在嘗試接收一個簡單的SNMP陷阱。

我已經使用camel-core和org.apache.servicemix.bundles.snmp4j設置了Maven項目。

我無法找到任何SNMP示例,但是基於其他示例,我想到了這個Main類:

public class Main {

    public static Processor myProcessor = new Processor() {
        public void process(Exchange arg0) throws Exception {
            // save to database
        }
    };

    public static void main(String[] args) {

        CamelContext context = new DefaultCamelContext();
        context.addComponent("snmp", new SnmpComponent());

        RouteBuilder builder = new RouteBuilder() {
            public void configure() {
                from("snmp:127.0.0.1:162?protocol=udp&type=TRAP").process(myProcessor);
            }
        };

        try {
            context.addRoutes(builder);
            context.start();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

但是,當我在Eclipse中作為Java應用程序運行它時,它會在運行半秒鍾后退出。 我期望它繼續運行並聽127.0.0.1:162 ...

任何幫助是極大的贊賞

至少拾起一個陷阱並打印到System.out的一種方法是這樣的:

public class SNMPTrap {

    private Main main;

    public static void main(String[] args) throws Exception {
        SNMPTrap snmpTrap = new SNMPTrap();
        snmpTrap.boot();
    }

    @SuppressWarnings("deprecation")
    public void boot() throws Exception {

        main = new Main();
        main.bind("snmp", new SnmpComponent());
        main.addRouteBuilder(new MyRouteBuilder());
        main.addMainListener(new Events());

        System.out.println("Starting SNMPTrap. Use ctrl + c to terminate the JVM.\n");
        main.run();
    }

    private static class MyRouteBuilder extends RouteBuilder {
        @Override
        public void configure() throws Exception {
            from("snmp:127.0.0.1:162?protocol=udp&type=TRAP").process(myProcessor)
                .bean("snmp");
        }
    }

    public static Processor myProcessor = new Processor() {
        public void process(Exchange trap) throws Exception {
            System.out.println(trap.getIn().getBody(String.class));

            // Save to DB or do other good stuff
        }
    };

    public static class Events extends MainListenerSupport {

        @Override
        public void afterStart(MainSupport main) {
            System.out.println("SNMPTrap is now started!");
        }

        @Override
        public void beforeStop(MainSupport main) {
            System.out.println("SNMPTrap is now being stopped!");
        }
    }
}

但是,我得到警告,現在不贊成使用Camel核心的Main。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM