如何最好地存储和发送SNMP消息到ios?

时间:2012-11-03 13:20:30

标签: iphone linux architecture activemq snmp

我的目标是从客户端(可能是防火墙)的后端服务器传输SNMP消息,将它们存储在某个快速数据库服务器中,然后将它们推送到iOS设备(http://bit.ly/vwBf5)。 / p>

我的选择是什么?

  1. 封装snmp消息并通过http将其传输到数据库服务器,然后推送到iOS并存储在某个数据库中。 SNMP代理 - >处理服务器(某些引擎处理传入的消息) - >推送到iOS

  2. 然后使用一些snmp代理来捕获。使用自己的ActiveMQ服务器推送到IOS使用一些快速持久性数据库。代理 - > ActiveMQ服务器(Hadoop for persistance) - > iOS

  3. 在db中,我将存储登录,时间,消息,来源,发送到apple,服务器ID和用户名。大多数情况下,数据库只会写入,但有时会读取(来自Web请求)。

    我有什么选择:Hadoop,Cassandra,Mongo?

1 个答案:

答案 0 :(得分:1)

好的,有点模糊的情景。但是,既然你已经考虑过ActiveMQ,请看看Apache Camel,它有点像你想要的那样(可能,因为它有点难以理解):

Camel has support读取SNMP陷阱(或对SNMP消息进行轮询),以及支持向APNS以及多个数据库(包括MongoDB,Hadoop以及JDBC兼容的SQL服务器)发送消息。 / p>

仅举例说明它在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