1

Microsoft の Azure クラウドで MongoDB バックエンドを使用して、Node.js 環境内で Mosca MQTT ブローカーを実行しようとしています。DocumentDB ストレージには MongoDB API があります。

最初に、Mosca の Web サイトhttps://github.com/mcollina/mosca/wiki/Mosca-basic-usage#lets-put-it-all-together-nowからサンプル コードをコピーしました。

var mosca = require('mosca')

var ascoltatore = {
    type: 'mongo',        
    url: 'mongodb://localhost:27017/mqtt',
    pubsubCollection: 'ascoltatori',
    mongo: {}
};

var moscaSettings = {
    port: 1883,
    backend: ascoltatore,
    persistence: {
        factory: mosca.persistence.Mongo,
        url: 'mongodb://localhost:27017/mqtt'
    }
};

var server = new mosca.Server(moscaSettings);
server.on('ready', setup);

server.on('clientConnected', function(client) {
    console.log('client connected', client.id);     
});

server.on('published', function(packet, client) {
    console.log('Published', packet.payload);
});

function setup() {
    console.log('Mosca server is up and running')
}

...ローカルにインストールされたMongoDBサーバーで正常に動作します。

url:次に、2 つの出現箇所を、Azure portal から取得できる Node.js 接続文字列に置き換えました。その後、Azure DocumentDB への接続は次のエラーで失敗します。

$ node index.js 
/[...]/node_modules/mongodb/lib/utils.js:98
process.nextTick(function() { throw err; });
                              ^
Error: Cannot recover. Collection is not capped.
at /[...]/node_modules/ascoltatori/lib/mongo_ascoltatore.js:241:26
at handleCallback (/[...]/node_modules/mongodb/lib/utils.js:95:56)
at /[...]/node_modules/mongodb/lib/collection.js:1559:5
at handleCallback (/[...]/node_modules/mongodb/lib/utils.js:95:56)
at /[...]/node_modules/mongodb/lib/collection.js:1528:5
at handleCallback (/[...]/node_modules/mongodb/lib/utils.js:95:56)
at /[...]/node_modules/mongodb/lib/cursor.js:852:16
at handleCallback (/[...]/node_modules/mongodb-core/lib/cursor.js:171:5)
at setCursorDeadAndNotified (/[...]/node_modules/mongodb-core/lib cursor.js:506:3)
at nextFunction (/[...]/node_modules/mongodb-core/lib/cursor.js:652:7)
at Cursor.next [as _next] (/[...]/node_modules/mongodb-core/lib cursor.js:693:3)
at fetchDocs (/[...]/node_modules/mongodb/lib/cursor.js:848:10)
at /[...]/node_modules/mongodb/lib/cursor.js:871:7
at handleCallback (/[...]/node_modules/mongodb-core/lib/cursor.js:171:5)
at nextFunction (/[...]/node_modules/mongodb-core/lib/cursor.js:683:5)
at /[...]/node_modules/mongodb-core/lib/cursor.js:594:7
at queryCallback (/[...]/node_modules/mongodb-core/lib/cursor.js:253:5)
at /[...]/node_modules/mongodb-core/lib/connection/pool.js:457:18
at nextTickCallbackWith0Args (node.js:419:9)
at process._tickCallback (node.js:348:13)

ここで何が欠けているのでしょうか?

4

1 に答える 1