Vertx Java客户端抛出" SMF AD绑定响应错误"同时连接solace vmr Server

时间:2018-05-04 12:41:26

标签: vert.x solace solace-mq vertx-verticle

当我尝试连接安慰VMR服务器并从名为Vertx AMQP Bridge的Java客户端传递消息时。

我能够连接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:   错误{condition = amqp:not-found,description =&#39; SMF AD绑定响应   错误&#39;,info = {solace.response_code = 503,solace.response_text =未知   队列}} Apr 27,20188 3:07:29 PM io.vertx.proton.impl.ProtonSessionImpl   警告:接收器因错误而关闭   io.vertx.core.impl.NoStackTraceThrowable:   错误{condition = amqp:not-found,description =&#39; SMF AD绑定响应   错误&#39;,info = {solace.response_code = 503,solace.response_text =未知   队列}}

我已经在安慰V​​MR中正确创建了队列和主题,但是无法发送/接收消息。我错过了安慰VMR服务器端的任何配置吗?上面的Vertx Sender Java代码是否需要进行代码更改?我在传递消息时收到上面的错误跟踪。有人可以帮忙吗?

Vertx AMQP Bridge Java客户端:https://vertx.io/docs/vertx-amqp-bridge/java/

1 个答案:

答案 0 :(得分:0)

您可能遇到此错误的原因有几个。

可能是客户端无权发布有保证的消息。要解决此问题,您需要启用&#34;保证端点创建&#34;在Solace路由器端的客户端配置文件中。

也可能是应用程序正在使用回复处理。 Solace路由器目前不支持此功能。将在Solace VMR的8.11版本中添加对此的支持。解决方法是将ReplyHandlingSupport设置为false。

AmqpBridgeOptions().setReplyHandlingSupport(false);

Solace VMR中还存在一个已知问题,当从持久主题端点取消订阅时会导致此错误。此问题的修复程序也将出现在Solace VMR的8.11版本中。解决方法是在没有先取消订阅的情况下断开客户端连接。