如何使用 qmanager 和通道与较新版本的 vert.x 连接来实现通过 MQ 系列队列发送和接收消息的应用程序?
我希望做这样的事情,但是较新版本的 vert.x mqtt 不允许我这样做。
Vertx vertx = Vertx.vertx();
// Crear una instancia del cliente MQTT
MqttClient client = vertx.createMqttClient();
// Configurar el cliente MQTT
MqttConnectOptions options = new MqttConnectOptions().setQmanager("my-qmanager").setChannel("my-channel");
client.connect("tcp://localhost:1883", "my-client-id", "my-password", options, result -> {
// Procesar el resultado de la conexión
if (result.succeeded()) {
// La conexión se realizó correctamente
// Crear un consumidor para la cola de entrada
client.subscribe("entrada", qos -> {
// Procesar el resultado de la suscripción
if (qos.succeeded()) {
// La suscripción se realizó correctamente
// Registrar un handler para el consumidor
client.consumer("entrada", message -> {
// Procesar el mensaje recibido
System.out.println("Recibido mensaje: " + message.body());
});
} else {
// La suscripción no se realizó correctamente
System.err.println("Error al suscribirse a la cola: " + qos.cause());
}
});
// Crear un productor para la cola de salida
client.publish("salida", "Hola Mundo", qos -> {
// Procesar el resultado de la publicación
if (qos.succeeded()) {
// La publicación se realizó correctamente
System.out.println("Mensaje publicado correctamente");
} else {
// La publicación no se realizó correctamente
System.err.println("Error al publicar el mensaje: " + qos.cause());
}
});
} else {
// La conexión no se realizó correctamente
System.err.println("Error al conectar al broker MQTT: " + result.cause());
}
});
// Ejecutar la aplicación
vertx.run();
}
我对 vert.x 一无所知,但是 vert.x 切换到 MQTT v5.0 了吗?
IBM MQ 仅支持 MQTT v3.1.1: https://www.ibm.com/docs/en/ibm-mq/9.3?topic=reference-mq-telemetry-transport-format-protocol
因此,如果有配置或设置参数告诉 vert.x 使用 MQTT v3.1.1 协议,则更改为 MQTT 3.1.1 或仅使用 vert.x 的先前版本