@ SqsListener-annotatedメソッドを持つコンポーネント "MessageHandler"を介してSQSキューをリッスンするだけでなく、メッセージが到着したとき。モジュール/統合テストでSpring SQSハンドラを無効にする方法
また、本番環境でhttpを介して正常性ステータスとメトリックを取得したいので、ブートスターター - ウェブ依存関係もあります。
私はモジュールテストを作成しましたが、すでにアプリケーションコンテキストとautowires beanがあります。
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = NONE)
しかし、MessageHandlerのBeanはまた、インスタンス化されますと、私は予防したいAWS、に接続しようとする:私はまた、試験で必要とされていないWebサーバを無効にする方法を見つけました。
@Component
@Primary
public class TestMessageHandler implements MessageHandler {
@Override
public void handleMessage(final NewMessage newMessage) throws Exception {
return null;
}
}
しかし、今、私がしたい:作品
一つの解決策は、のhandleMessageメソッド@SqsListenerアノテーションを持っていない@Primary注釈付きのsrc /テスト/ Javaでテスト実装を持つことです(実際の)MessageHandler beanをテストします。つまり、Springでインスタンス化して依存関係をautowireしたいのですが、@SqsListenerアノテーションをアクティブにしたくないので、私のテストでこれを呼び出すことができます:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = NONE)
public class IntegrationTest {
@Autowired
private RealMessageHandler messageHandler;
@Test
public void testHandleMessage() throws Exception {
messageHandler.handleMessage(new NewMessage(...));
}
}
私が必要とするのは、 f RealMessageHandlerのhandleMessageメソッドのSQSリスナを設定するspring-cloud-aws-starterモジュールの魔法。
どのように私はそれを行うだろうか? org.springframework.beans.factory.BeanCreationException:によって引き起こさ
クラスパスリソース –
で定義されたエラー名でBeanを作成する「simpleMessageListenerContainer」あなたのコードはありませんし、それが問題を解決する方法を何の説明を追加してください。コードのみの回答は良い習慣とはみなされません(ドキュメントを参照) – Yannis