2017-08-07 1 views
0

私はちょうどSNSを使い始めています。私が見ている限り、単に出版社に加入してイベントを聞くことはできません。あなたは私にする必要があります。公開アクセス可能なコールバックを作成する(url/email/sms)、ii)。それをサービスに登録し、iii)。コールバックの種類に固有のコンシューマを構築します。パブリックコールバックを使用せずにAWS SNS通知を聴くことは可能ですか?

const client = new SnsClient({ 
    region: 'eu-west-1', 
    topicArn: 'XXX' 
}) 
client.on('connection', (connection) => { 
    connection.on('notification', (notification) => { 
    // do some work with notification 
    }) 
}) 

私は何かが欠け午前:

私はこれに似たAPIを使用したいですか? 1つのイベント(ファンアウト)を聴いているX台のWebサーバーを持っていたい。

たとえば、私のワーカーはプライベートサブネット上のEC2インスタンスである可能性がありますので、利用可能なサブスクリプションは「http(s)」、「email」、「sms」は機能しません。 "SQS"は機能するかもしれませんが、インスタンスごとにキューを設定しなければならず、プッシュではなく長いポーリングを使用します。 "アプリケーション"と "ラムダ"は適用されません。

AWS SNSはこのユースケースに適していますか?そうでない場合は、代わりのAWSサービスがありますか?

**過度に複雑な役割/ DNSのみで動作するhttpsを取得することができます。

編集: は、私は私がやりたいことはGoogle Cloud PubSub SubscriptionまたはRabbitMQが、ネイティブ(AWS)のではなく、サードパーティのサービスを使用するのと同様だと思います。

+0

[ファンアウトシナリオ](http://docs.aws.amazon.com/sns/latest/dg/SNS_Scenarios.html#SNSFanoutScenario)についてお尋ねしますか? –

+0

@AlexBlexの種類ですが、私は**接続**にもっと興味があります。自分のインスタンスのコールバックとサブスクライバを作成する必要はありません。私は単純に "ソケットのような"接続をしたいです。私の本能は、私は別の製品が必要だが、適切なAWSを特定できないということです。インスタンスごとに別々のキューを配線する必要はないようです。 – Simon

+0

さて、あなたはおそらく "ソケットのような"接続が何であるかを精緻化する必要があります。 pubsubとrabbitは、すべての消費者に購読する必要があります。サブスクリプションはかなり "ソケットのような"ものです。 –

答えて

2

"SQS"は機能しますが、インスタンスごとにキューを設定する必要があります。プッシュではなく長いポーリングを使用します。

SQSは、AWSで説明した内容を実装する方法とまったく同じです。 SNSはconnection.on('notification',...スタイルの操作をサポートしていませんが、これはSQSの長いポーリングが実際にどのように機能するかを正確に示しています。

「長いポーリング」という語句と混同しないでください。はい、技術的にはそうですが、それは長い投票で発生する正当なプッシュ操作です。空のキューに対して20秒間の長いポーリングを5秒間行うと、次に到着するメッセージは次のようになります。 すぐにを送信すると、長いポーリングでその1つのメッセージが返されます。今。もう15秒ではありません。あなたがもっと頼んでも、あなたは座っておらず、もっと待っています。ロングポーリングは本質的にSQSのプッシュラッパーです。

ファンアウトキューを必ずしも前面に定義する必要はありません。各リスナーは、自分自身のキューを作成し、トピックにキューを登録してリッスンを開始できます。

またはAWS IoTにメッセージブローカーがあります。これはアプリケーションの少し非正統だが、1つのトピックに対する複数のサブスクライバをサポートするように見える人もいるだろう。

メッセージブローカは、すべてのクライアントセッションと各セッションのサブスクリプションのリストを保持します。メッセージがトピックに公開されると、ブローカーはそのトピックに対応するサブスクリプションを持つセッションを確認します。ブローカは、現在接続されているクライアントを持つすべてのセッションにパブリッシュメッセージを転送します。

http://docs.aws.amazon.com/iot/latest/developerguide/iot-message-broker.html

これは、両方のケースでTLSで、ウェブソケット上でTCP上のMQTT、およびMQTTをサポートしています。

+0

IoT Message Brokerは面白そうですが、それ自体の問題です...「デバイス」を登録してクライアント証明書を配布しても、単純化されません。答えを受け入れる。乾杯。 – Simon

関連する問題