API-интерфейс узла Solace для извлечения сообщения из очереди буферизации сообщений

При подключении через API Nodejs к очереди сохраняемости сообщений Solace мы обнаруживаем ошибку:

{"message": "Потребитель не поддерживается маршрутизатором для этого клиента", "name": "OperationError", "subcode": 3, "reason": null}

при использовании примера API Solace Node.js для подключения к очереди сообщений сохраняемости с помощью URI веб-сообщения с помощью soladmin.

 consumer.connect = function (argv) {
        if (consumer.session !== null) {
            consumer.log('Already connected and ready to consume messages.');
            return;
        }
        // extract params
        //if (argv.length < (2 + 3)) { // expecting 3 real arguments
        if (argv.length < 4) {
            consumer.log('Cannot connect: expecting all arguments' +
                '[<protocol://host[:port]>, <client-username>, <message-vpn>, <client-password>].\n' +
                'Available protocols are ws://, wss://, http://, https://');
            process.exit();
        }
        var hosturl = argv[0] //argv.slice(2)[0];
        consumer.log('Connecting to Solace message router using url: ' + hosturl);
        //var usernamevpn = argv.slice(3)[0];
        var username = argv[1]//usernamevpn.split('@')[0];
        consumer.log('Client username: ' + username);
        var vpn = argv[2]//usernamevpn.split('@')[1];
        consumer.log('Solace message router VPN name: ' + vpn);
        var pass = argv[3]//argv.slice(4)[0];
        // create session
        try {
            consumer.session = solace.SolclientFactory.createSession({
                // solace.SessionProperties
                url: hosturl,
                vpnName: vpn,
                userName: username,
                password: pass,
            });
        } catch (error) {
            consumer.log(error.toString());
        }

person Michael Soong    schedule 14.06.2018    source источник


Ответы (1)


Сообщение "Consumer is not supported by router for this client" указывает, что проблема находится на удаленном конце.

Проверьте, позволяет ли профиль клиента получать гарантированные сообщения. В противном случае может возникнуть проблема с буфером сообщений, которая не позволяет брокеру сообщений предоставлять гарантированную службу обмена сообщениями.

Фрагмент кода в вопросе предназначен только для инициации соединения и не имеет ничего общего с подключением к очереди. Операция, которая не удалась, должна быть

consumer.messageConsumer.connect();
person Wai Leong    schedule 14.06.2018