2017-12-27 17 views
0

ユースケースを巨大なファイルを送信します。ActiveMQのベストプロトコルは、不安定な接続を介して

現在のところ、Activemq Artemisサーバを使用して、再試行間隔を-1にしてtcpプロトコルによる入力ストリームの助けを借りて、巨大なファイルをByteMessageとして送信します。ここでの主な問題は、消費者のエンドポイントの接続がほとんど不安定であることです。つまり、移動性のためにネットワークから切断します。

ファイルをキューに入れている間に、接続が切断され、再接続されたブローカは、トランザクションが中断した場所から再開する必要があります(たとえば、300 MBのファイルをコンシューマキューに転送しているときに、100 MBの一部がコンシューマキューサーバは、接続はしばらく後に削除して再接続され、その後、プロセスは再び、残りの200メガバイト全体ではなく、300メガバイトの転送から再開する必要があります。

私の質問は、Apache ActiveMQのアルテミスはその意志「大」のメッセージをサポートしています

答えて

1

ActiveMQのアルテミスでそれを達成するために最善のプロトコル(TCP、ストンプとopenwire)とベストプラクティス(入力ストリームbytemessage blobmessage、)一つです(Netty TCPを使用する)ネットワーク上のストリーム。これはthe documentationでカバーされています。注:この機能は「コア」クライアントにのみ適用されます。 STOMPまたはOpenWireでは動作しません。また、切断時にメッセージ転送が中断した場所でメッセージ転送が行われる「再開」機能もサポートしていません。

私の推薦は、ネットワークの遅さや切断の場合に対処するために容易になります個々のメッセージで小さなチャンクにメッセージを送ることであろう。メッセージには相関IDか何かと一緒にグループ化することができ、その後、エンドクライアントは、メッセージの部分を取ることができ、それらがすべて受信されると、それらを一緒に組み立てます。

関連する問題