使用 Mqtt 订阅者与 main class 通信

Communicate to main class using Mqtt subscriber

我有一个 main class 在另一个线程中启动一个 mqtt 订阅者(基本上是一个监听消息到达的服务)。当该订阅者收到该消息时,我需要将其转发到我的主 class 以便它可以对该消息进行计算。

在订阅者中,我有一个 messageArrived 函数。我不确定如何将该消息传达给我的主要 class。我在想也许是某种网络,比如从订阅者发送一个套接字到监听的主class。但想考虑其他建议。所有这些都在同一台机器上完成。

订阅者的片段在主线程的另一个线程中旋转 class:

@Override
public void messageArrived(String topic, MqttMessage message) throws MqttException{
//send message to main class somehow...
}

需要来自上述代码的消息的主要 class:

new Thread(optSubscriber).start();  //spin up subscriber service to listen for messages aka messageArrived

//somehow grab that message from messageArrived and place into next function
computeMessageFromSubscriber(message);

将消息对象推送到一个集合(例如 Vector),然后从处理线程轮询该集合。

另外,与其在预定的单线程上进行工作,不如看看 java.util 线程池模型,它以一种可扩展的方式封装了这种模式

https://docs.oracle.com/javase/tutorial/essential/concurrency/pools.html