Java-клиент Vertx выдает "Ошибка ответа SMF AD bind" при подключении к серверу solace vmr
Когда я пытаюсь подключиться, утешить VMR Server и доставить сообщения от клиента Java под названием Vertx AMQP Bridge.
Я могу подключиться к серверу Solace VMR, но после подключения не могу отправлять сообщения для утешения VMR. Я использую ниже код отправителя от клиента Vertx.
public class Sender extends AbstractVerticle {
private int count = 1;
// Convenience method so you can run it in your IDE
public static void main(String[] args) {
Runner.runExample(Sender.class);
}
@Override
public void start() throws Exception {
AmqpBridge bridge = AmqpBridge.create(vertx);
// Start the bridge, then use the event loop thread to process things thereafter.
bridge.start("13.229.207.85", 21196,"UserName" ,"Password", res -> {
if(!res.succeeded()) {
System.out.println("Bridge startup failed: " + res.cause());
return;
}
// Set up a producer using the bridge, send a message with it.
MessageProducer<JsonObject> producer =
bridge.createProducer("T/GettingStarted/pubsub");
// Schedule sending of a message every second
System.out.println("Producer created, scheduling sends.");
vertx.setPeriodic(1000, v -> {
JsonObject amqpMsgPayload = new JsonObject();
amqpMsgPayload.put(AmqpConstants.BODY, "myStringContent" + count);
producer.send(amqpMsgPayload);
System.out.println("Sent message: " + count++);
});
});
}
}
Я получаю ошибку ниже:
Ошибка запуска моста: io.vertx.core.impl.NoStackTraceThrowable: Error{условие =amqp: не найдено, описание ='Ошибка ответа связывания SMF AD', info={solace.response_code=503, solace.response_text= Неизвестная очередь}} 27 апреля 2018 15:07:29 io.vertx.proton.impl.ProtonSessionImpl ВНИМАНИЕ: Приемник закрыт с ошибкой io.vertx.core.impl.NoStackTraceThrowable: Ошибка {условие =amqp: не найдено, описание ='SMF Ошибка ответа AD AD ', info={solace.response_code=503, solace.response_text= Неизвестная очередь}}
Я создал очередь, а также тему правильно в утешении VMR, но не смог отправлять / получать сообщения. Я скучаю по какой-либо конфигурации со стороны сервера VMR утешения? Требуется ли изменение кода в Java-коде Vertx Sender выше? Я получаю сообщение об ошибке выше при доставке сообщения. Может ли кто-то помочь на том же?
Java-клиент Vertx AMQP Bridge: https://vertx.io/docs/vertx-amqp-bridge/java/
1 ответ
Есть несколько причин, по которым вы можете столкнуться с этой ошибкой.
Возможно, клиент не авторизован для публикации гарантированных сообщений. Чтобы это исправить, вам нужно включить "гарантированное создание конечной точки" в профиле клиента на стороне маршрутизатора Solace.
Также может быть, что приложение использует обработку ответа. В настоящее время это не поддерживается маршрутизатором Solace. Поддержка этого будет добавлена в выпуске 8.11 Solace VMR. Обходной путь для этого должен был бы установить ReplyHandlingSupport в false.
AmqpBridgeOptions().setReplyHandlingSupport(false);
Существует также известная проблема в Solace VMR, которая вызывает эту ошибку при отписке от конечной точки долгосрочной темы. Исправление для этой проблемы также будет в 8.11 выпуске Solace VMR. Обходной путь для этого состоит в том, чтобы отключить клиент без предварительной отписки.