有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java简单Apache骆驼SNMP陷阱

我是Apache Camel的新手,正在尝试接收一个简单的SNMP陷阱

我已经用camel核心和org建立了Maven项目。阿帕奇。servicemix。捆。snmp4j

我找不到任何SNMP示例,但根据其他示例,我提出了以下主要类:

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

非常感谢您的帮助


共 (1) 个答案

  1. # 1 楼答案

    至少有一种方法可以找到一个陷阱并打印到系统中。我们是这样的:

    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!");
            }
        }
    }
    

    然而,我得到一个警告,Main是Camel核心的一部分,现在已经被弃用了