私はメッセージングミドルウェアとしてウサギの春休憩アプリを持っています。アプリケーションが受信休止要求を受け入れると、それはユーザーに返信しますが、非同期で処理が追加され、新しいメッセージが生成され、それがウサギに送信されます。そこから、一部の消費者がメッセージを読んでそれを外部システムに配信します。今、ウサギサーバー自体がダウンしている場合があります。 は失敗のようなものを扱うために、私はウサギがオンラインになるまで、キューは、いくつかのメッセージを処理することができるようになります春のブートとrabbitmqの統合、どのようにコンポーネントの障害で回復する?
@Bean
public TaskExecutor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(5);
executor.setMaxPoolSize(10);
executor.setQueueCapacity(25);
return executor;
}
(調整可能なサイズでコースの)ブロッキングキューを持っています。しかし、時間がかかりすぎてリクエストがキュー・サイズを超えると、失敗することになります。問題は、私がこれを改善してより効率的にする方法があるということです。業界のベストプラクティスは何ですか?そのシナリオのパターンはありますか?
おそらく、Spring Cloud Histrixサーキットブレーカです。 https://martinfowler.com/bliki/CircuitBreaker.htmlまたはhttps://spring.io/guides/gs/circuit-breaker/ –
おそらく、消費者と生産者の両方をHistrixブレーカーで包むことは理にかなっています。ウサギの接続工場自体はどうですか?接続が確立できない場合は、何度もやり直してネットワークとサーバーのリソースを無駄にすることは意味がありません。 – Imran
Springクラウドストリームバインダーhttp://cloud.spring.io/spring-cloud-static/spring-cloud.html#_spring_cloud_streamでは、持続的なパブリッシュ/サブスクライブセマンティクスの概念が導入されています。デフォルトでは、RabbitMQバインダーはSpringBootのConnectionFactoryを使用するため、RabbitMQのすべてのSpringBoot設定オプションをサポートしています。しかし、私の謙虚な意見では、あなたがSpringクラウドを初めて使う人であれば、この優秀なコースにまず従ってください:https://www.udemy.com/microservices-with-spring-cloud/learn/v4/overview –