spigot plugin mqtt interface
- MQTTControllerがpublish実行/subscribeハンドラ登録するクラスなので以下のようなMQTTReceiverインタフェース実装したクラスを作る。
package jp.minecraftuser.ecomqtt.commands;
import jp.minecraftuser.ecomqtt.io.MQTTController;
import jp.minecraftuser.ecomqtt.io.MQTTReceiver;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.Plugin;
/**
* MQTTサブスクライブ受信ハンドラ/パブリッシュ制御クラス
* @author ecolight
*/
public class EcoMQTTCommandController extends MQTTController implements MQTTReceiver {
CommandSender sender;
public EcoMQTTCommandController(Plugin plg_, CommandSender sender_) {
super(plg_);
sender = sender_;
}
@Override
public void handler(String topic, byte[] payload) {
sender.sendMessage("topic[" + topic + "] payload[" + new String(payload) + "]");
}
}
- publishするとき
EcoMQTTCommandController rec = new EcoMQTTCommandController(plg);
rec.publish("topic", "message".getBytes());
- subscribeするとき
rec.registerReceiver("topic", rec, true);
詳しくは jp.minecraftuser.ecomqtt.commands あたりのソースコード参照
- EcoFrameworkプラグイン前提
- キューに貯めて非同期でpublishしてるけど、コネクション数節約のために順次送信なので遅い(件数×ping時間なイメージ)。
- 自分用なので細かいところは割愛