ActiveMQ のフェイルオーバー トランスポートは、ブローカー インスタンスの 1 つがダウンした場合にうまく機能します。プロデューサーは、次のブローカー インスタンスに自動的に切り替えます。
ブローカーがメモリ制限 ( systemUsage
activemq.xml のプロパティで設定) に達した場合、同じ動作を期待していました。ただし、この場合、ログに「メモリがいっぱいです」という警告がスローされ始めますがjmsTemplate.convertAndSend
、プロデューサーのアプリケーションのメソッドはハングします。
sendFailIfNoSpace="true"
systemUsage プロパティのオプションを設定しようとしました。この場合、プロデューサー アプリケーションはorg.springframework.jms.ResourceAllocationException: Usage Manager Store is Full
例外をスローし始めたばかりでconvertAndSend
、適切なブローカー インスタンスに切り替えませんでした。
誰かが例外や「メモリがいっぱい」の場合にフェイルオーバーする方法をアドバイスできますか?