2015-11-19 5 views
0

У меня есть основной класс, который закручивает подписчика mqtt в другом потоке (в основном сервис, который слушает сообщение, чтобы прибыть). Когда этот абонент получает это сообщение, мне нужно, чтобы он перешел на мой основной класс, чтобы он мог выполнить вычисление этого сообщения.Общайтесь с основным классом, используя Mqtt-подписчик

В подписчике у меня есть сообщениеАрхивированная функция. Я не уверен в том, как пообщаться с этим сообщением в моем основном классе. Я думаю, может быть, какая-то сеть, как отправка сокета от подписчика к основному классу, который слушает. Но хотелось бы рассмотреть другие советы. Все это делается на одной машине.

Отрывок из подписчика, который получает формованной в другом потоке из основного класса:

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

Основной класс, который необходимо сообщение из кода выше:

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); 

ответ

1

Пуш объекта сообщения в коллекции (например, Вектор), а затем опросить эту коллекцию из потока обработки.

Кроме того, а не делать работу на заранее определенный одном потоке, почему бы не посмотреть на модели java.util пула потоков, которые инкапсулированная эту модель таким образом, чтобы масштабируется

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

+0

После этого некоторых дополнительных исследований при многопоточности это действительно хорошая альтернатива тому, что я изначально планировал. – mastash3ff

Смежные вопросы