2

金融商品の価格を公開するシステムを構築しています。一部の計測器は 1 秒に数回更新され、一部の計測器は更新頻度が低くなります。更新頻度に関係なく、すべてのサブスクライバーは、その金融商品の最終更新または現在の価格を確認する必要があります。

サブスクライバーは、すべてのトピックでトピックの更新が表示されるまでしばらく待って、遅いトピックのビューを空のままにすることがあります。を使用しSessionPropertiesListenerて新しいオーディエンス メンバーをリッスンし、各トピックを現在の価格で更新することもできますが、それでは既存のオーディエンス メンバーに多くのノイズが発生し、尻尾が犬を振っているように感じます。

ゆっくりと更新されるトピックで私の問題を説明できます。

#!/usr/local/bin/node
var diffusion = require('diffusion');

const diffHost = "localhost";
const exampleTopic = "some/counter";

diffusion.connect({
    host : diffHost,
    port: 8080,
    secure: false,
    principal : 'admin',
    credentials : 'password',
}).then(function(session) {
    console.log('Connected to %s', diffHost);

    var count = 0;
    session.topics.add(exampleTopic).then(function(result) {
        console.log("Created %s", exampleTopic);
        setInterval(function() {
            session.topics.update(exampleTopic, ++count);
            console.log("Updated %s to %d", exampleTopic, count);
        }, 5000);
    }, function(error) {
        console.log('Topic add failed: ', error);
    });
});

に登録している人some/counterは、何かが表示されるまで平均 2.5 秒待機します。ここでトリックを見逃しているように感じます。サブスクライバーがサブスクライブするとすぐに現在の価格を効率的に取得するにはどうすればよいですか?

4

1 に答える 1

1

あなたのトピックsome/counterはステートレスです。これが、新しいサブスクライバーが更新される前に何も受信しない理由を説明しています。トピックを作成する代わりに:

session.topics.add(exampleTopic)

それを次のように置き換えます。

session.topics.add(exampleTopic, count)

..ステートフルトピックを作成します。

于 2016-04-04T15:26:23.570 に答える