activemqを使用してメッセージを送信しています。送信されるメッセージの数と、アプリケーションが送信している他の作業の量が原因です。非同期送信を有効にしました。
アプリケーションが終了したら、残りのメッセージが実際に配信されることを確認したいと思います。これは、接続で送信される最後のメッセージの1つを見逃すことがあるためです。
グーグルで調べてみると、いくつかのメッセージを見逃す可能性があるという警告だけが見つかりました。これは許容範囲ですが、最後のメッセージのいくつかを約40%の確率で見逃しています。この状況を改善したいと思います。
Q:activemqプロデューサー/センダーがすべての非同期メッセージを送信したかどうかを確認する方法はありますか?
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory( brokerUrl );
connectionFactory.setUseAsyncSend( true );
RedeliveryPolicy policy = connectionFactory.getRedeliveryPolicy();
policy.setInitialRedeliveryDelay( 500 );
policy.setBackOffMultiplier((short)2);
policy.setUseExponentialBackOff(true);
policy.setMaximumRedeliveries(10);