定期的にポーリング(JSON)メッセージをポーリングするように設定し、メッセージを処理してデータベースに保存することにより、AWS SQSキューと連携するSpring IntegrationFlowを実装しようとしました。複数のJSONオブジェクトパターンのSpring IntegrationFlow
キューから単一のJSONメッセージパターンを正常にポーリングして、私のカスタムオブジェクトに変換できました。今私は2種類のJSONパターンを同じSQSキューに送ります。例えば、異なるトランスとserviceActivator(ハンドルに、その後の経路メッセージを
"Type" : "Notification", "MessageId" : "xxxx-xxxx-xxxx", "TopicArn" : "arn:aws:sns:us-west-2:xxxxx:topicName00", "Subject" : "OK: \"test00\" in US-West-2", "Message" : "{\"AlarmName\":\"test00\..."
と
"Type" : "Notification", "MessageId" : "xxxxx-xxxx-xxxxx", "TopicArn" : "arn:aws:sns:us-west-2:xxxxxx:topicName01", "Message" : "{\"version\":\"0\",\"id\":\"xxxxx\",\"detail-type\":\"EC2 Instance State-change Notification\",\"source\":\"aws.ec2\..."
これらのメッセージは、同じキューに送信され、私は同じポーラーを使用してキューをポーリングしたいです)のメッセージ本文に基づいています。
@Bean
public IntegrationFlow sqsIntegrationFlow()
{
return IntegrationFlows.from(this.sqsMessageSource(), c -> c.poller(myPoller()))
.channel(new DirectChannel())
.<Payload,Boolean>route(input -> input.value().contains("EC2 Instance State-change Notification"),
mapping -> mapping
.subFlowMapping("true", sf -> sf.channel(new DirectChannel())
.transform(
SqsMessageToInstanceConverter::convertSqsMessagesToInstanceInfo)
.channel(new DirectChannel()).handle((message) -> {
ec2InstanceService.updateInstanceInfo((List<SqsMessageResult>) message.getPayload());
}))
.subFlowMapping("false", sf -> sf.channel(new DirectChannel())
.transform(SqsMessageToInstanceConverter::convertSqsMessageToAlarmInfo)
.channel(new DirectChannel()).handle((alarm -> {
cwAlarmService.updateAlarmInfo(
(List<SqsAlarmMessageResult>) alarm.getPayload());
}))))
.get();
}
私は私の質問があり、上記のように、ルータを使用してみましたとメッセージボディ(「EC2インスタンスの状態変更通知」)で文字列を使用してメッセージを特定したが
java.lang.ClassNotFoundException: org.springframework.integration.support.management.MappingMessageRouterManagement
とエラーが表示されます。
1.これはルータを使用する正しい方法ですか?
2.統合フローを使用して2つの異なるJSONメッセージを処理する目標をどのように達成できますか?
は、私たちの公式の春の統合AWSの拡張に切り替えることを検討してください。https://github.com/spring-projects/スプリング統合 - aws。 'SqsMessageSource'ではなく、Message Driven Listenerがあります。私はSI-AWSソリューションを購入した場所に興味があります。ありがとうございました! –