好吧,有点模糊的场景。但是,既然您已经考虑过 ActiveMQ,请也看看 Apache Camel,它可以满足您的需求(可能是因为它有点难以理解):
Camel 支持读取 SNMP 陷阱(或轮询 SNMP 消息),并支持将消息发送到 APNS 以及多个数据库(包括 MongoDB、Hadoop 以及 JDBC 兼容的 SQL 服务器)。
只是它在 Camel 代码中的外观示例(请注意,您需要对消息进行一些自定义格式以及配置才能使其正常工作,因此请不要尝试按原样运行此代码):
from("snmp:127.0.0.1:162?protocol=udp&type=TRAP") // from SNMP trap
.convertBodyTo(String.class)
.setHeader(ApnsConstants.HEADER_TOKENS, constant(IOS_DEVICE_TOKEN))
.to("apns:notify") // TO iOS
.to("mongodb:myDb?database=mySnmp&collection=traps&operation=insert"); // To DB
或者,如果您因为陷阱的峰值负载而觉得必须进行一些分段,您也可以这样做:
from("snmp:127.0.0.1:162?protocol=udp&type=TRAP") // from SNMP trap
.convertBodyTo(String.class)
.to("seda:stagedProcess"); //
from("sead:stagedProcess")
.setHeader(ApnsConstants.HEADER_TOKENS, constant(IOS_DEVICE_TOKEN))
.to("apns:notify") // TO iOS
.to("mongodb:myDb?database=mySnmp&collection=traps&operation=insert"); // To DB