Wie schalte ich apache camel kamelspringboottest an und vermeide java.lang.interruptedExceptionJava

Java-Forum
Guest
 Wie schalte ich apache camel kamelspringboottest an und vermeide java.lang.interruptedException

Post by Guest »

Ich habe einen Apache -Camel Spring -Boot -Test mit Localstack Mock AWS -Diensten geschrieben, um einen Integrationstest für ein Camel Spring -Projekt auszuführen. protokolliert es und sendet es an eine direkte Komponente. < /p>

Code: Select all

public void configure() throws Exception {
from("aws2-sqs://sqs-queue")
.routeId("file-upload-route")
.bean(sqsEventProcessor, "processSQSEvent" )
.to("direct:processed-file");
}
< /code>
Der Test geht weiter, aber der Testfall endet danach nicht. Es wartet 45 Sekunden und initiiert dann ein hartes Herunterfahren und log das Ausnahme von java.lang.interruptedException: null 
. Ich habe überprüft, ob nur eine Nachricht gesendet und empfangen wird. < /P>

Code: Select all

2025-02-07T19:53:11.661-08:00  INFO 54200 --- [] [ - ShutdownTask] o.a.c.i.engine.DefaultShutdownStrategy   :
Waiting as there are still 2 inflight and pending exchanges to complete, timeout in 10 seconds. Inflights per route: [file-upload-route = 2]
2025-02-07T19:53:12.670-08:00  INFO 54200 --- [] [ - ShutdownTask] o.a.c.i.engine.DefaultShutdownStrategy   :
Waiting as there are still 2 inflight and pending exchanges to complete, timeout in 9 seconds. Inflights per route: [file-upload-route = 2]
...

< /code>
Hier ist der Testfall: < /p>
@CamelSpringBootTest
@MockEndpoints("direct:processed-file") //mock the specified endpoint
@SpringBootTest
@TestPropertySource(properties = "spring.lifecycle.timeout-per-shutdown-phase=5s")
public class FileUploadRouteSpringTest {

@Autowired
private ProducerTemplate template;
@EndpointInject("mock:direct:processed-file")
private MockEndpoint mockEndpoint; //inject the mock endpoint as a bean

@BeforeEach
public void setUp() throws Exception {
mockEndpoint.setAssertPeriod(5000);
}

@Test
public void testReceive() throws Exception {

template.sendBody("aws2-sqs://sqs-queue" + "&deleteAfterRead=true", "Hello");
mockEndpoint.expectedMessageCount(1);
mockEndpoint.assertIsSatisfied();
List exchanges = mockEndpoint.getReceivedExchanges();
assertEquals(1, exchanges.size()); // Check if there is exactly one exchange message
}

@AfterEach
public void tearDown() throws Exception {
camelContext.shutdown();
}
}

Ich habe camelcontext.shutdown (); ausprobiert und auch Timeout-per-shutdown-Phase hinzugefügt. Dieser Fehler wird trotzdem protokolliert.
  • Warum zeigt die Route, dass es 2 Inflight -Nachrichten gibt, wenn ich nur eine Nachricht sende und sie verarbeitet wird? < /li>
    Wie kann ich enden Der Test schneller ohne zu warten, die Spring -App anmutig herunterzufahren und die Ausnahme in den Protokollen zu vermeiden?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post