Active MQ 是否可以直接监听端口而无需任何发送者java 应用程序

问题描述

我想将数据发送到一个端口,比如 UDP 端口,我希望 Active MQ 从该端口直接侦听它,而无需任何 Java 应用程序(发送方),然后一旦 Active MQ,将该数据排队,然后我使用我的接收器( Java 应用程序)从队列中提取数据并在我的应用程序中使用它。

我可以这样做吗,我正在处理 SNMP 陷阱应用程序,另一个应用程序正在将 SNMP 陷阱数据发送到 udp 端口​​ 162,现在我想要一个队列只侦听端口 162 并将该数据保存到它的队列中,所以当我的应用程序可用,它将从队列中提取该数据。

或者有什么其他方法可以实现这一点。

解决方法

是的,但您需要添加两个组件以将其绑定在一起,这是一个有效的用例,希望通过在收集器和存储之间使用消息队列来进行更可靠的 SNMP 数据收集。

  1. 设置 ActiveMQ
  2. 添加 UDP SNMP 到 ActiveMQ 代理侦听器 (StA)
  3. 添加一个 ActiveMQ 到 SNMP 的发送方 (AtS)

方法:

A.又快又脏(纯数据代理和存储)

您可以使用 Apache Netty 侦听器从网络中获取数据并将其存储为 BytesMessage (StA),然后让 (AtS) 侦听器使用这些消息并发送到SNMP 服务器。

骆驼可能会带你到那里..

StA: from(netty:udp://.).to("jms:queue:TRAPS.INPUT")

AtS: from("jms:queue:TRAPS.INPUT").to(netty:udp://snmpserver:port)

参考:https://camel.apache.org/ 参考:https://camel.apache.org/components/latest/netty-component.html

B. SNMP 感知

创建一个 SNMP 陷阱侦听器,用于处理所需的任何特定于 SNMP 协议的内容。

参考:https://agentpp.com/api/java/snmp4j.html

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...