0

現在、ユーザーの場所に基づいてタイムラインにメッセージを送信および読み取ることができるモバイル アプリケーションを設計しています。実際の開発版ではActiveMQを使用してメッセージを送信および消費していますが、まだ完成していないため、開発を続ける前に、将来の問題を回避するためにアーキテクチャをどのようにするかを定義することを好みます。これが正しいアプローチかどうかはわかりませんが、私が考えたことは次のとおりです。

  • すべてのユーザーは、キューにメッセージを送信するプロデューサーです。キュー名は、ユーザーの一意の ID にすることができます。
  • 十分に近い場合、ユーザーは他のユーザーのキューにサブスクライブできます。これには、ユーザー キューのグループに対するトピックのようなものが含まれます。このキューは、消費者の位置である円の中心である固定半径内にあるユーザーを取得することによって生成される、動的である必要があります。各ユーザーには、このような独自のトピックまたはキューがあります(Twitter のタイムラインと非常によく似た概念)。これは、各ユーザー キューに複数のコンシューマーがあることを意味します。

クライアント側からは、キューとの接続プロトコルとして Objective-C ストンプ クライアントを使用しています。

私の質問は、これは問題への良いアプローチですか? 近くのユーザーへのユーザー サブスクリプションが、 ActiveMQ とTopicsを使用した実行可能なアーキテクチャであるかどうかはわかりません。このタイムライン サブスクリプションの問題に対する提案はありますか? 一方で、すべてのユーザーが独自のキューのプロデューサーになる必要があることは明らかですが、私も間違っているかもしれません。

編集

主題に関する詳細情報を含む参照、リンク、本などは高く評価されます。

4

2 に答える 2

1

上から、これに関するいくつかの考え...

  • キューの代わりにトピックを使用して、メッセージを複数のサブスクライバーなどに「ブロードキャスト」します。
  • 場所に基づく動的なサブスクライブは、JMS テクノロジに適していないように思えます。
  • 地理空間 (別名ロケーションベース) のインデックス作成/検索が組み込まれたもの ( mongoDBや空間データベースなど)の使用を検討してください。
于 2012-10-02T02:50:25.820 に答える
0

1 つの問題は、新しいユーザーを追加することは、新しいキューを追加することを意味することです。それはどのように行われますか?これにより、システムがサポートできるユーザー数が制限されませんか?

ユーザーにトピックに送信するメッセージを作成させ、コンシューマーとして登録させることもできます。

別のアプローチは、ノンブロッキング IO とNettyです。

于 2012-10-01T09:39:57.613 に答える