小编rug*_*den的帖子

Wiremock:同一URL和内容的多个响应?

也在这里分享:https://github.com/tomakehurst/wiremock/issues/625

我正在编写集成测试来验证与REST API交互的应用程序是否正确处理了不成功的请求.为此,我想模拟GET请求两次到HTTP端点的场景.第一次,请求不成功,响应状态代码为500; 第二次,请求成功,响应状态代码为200.请考虑以下示例:

@Rule
public WireMockRule wireMockRule = new WireMockRule(wireMockConfig().dynamicPort()
                                                               .dynamicHttpsPort());

@Test
public void testRetryScenario(){

// First StubMapping
stubFor(get(urlEqualTo("/my/resource"))
        .withHeader("Accept", equalTo("text/xml"))
        .willReturn(aResponse()
            .withStatus(500) // request unsuccessful with status code 500
            .withHeader("Content-Type", "text/xml")
            .withBody("<response>Some content</response>")));

// Second StubMapping
stubFor(get(urlEqualTo("/my/resource"))
        .withHeader("Accept", equalTo("text/xml"))
        .willReturn(aResponse()
            .withStatus(200)  // request successful with status code 200
            .withHeader("Content-Type", "text/xml")
            .withBody("<response>Some content</response>")));

//Method under test that makes calls to endpoint
doSomething();

Thread.sleep(5000);

//Verify GET request was made again after first attempt
verify(exactly(2), getRequestedFor(urlEqualTo("/my/resource")));

}
Run Code Online (Sandbox Code Playgroud)

有没有办法避免第二个StubMapping覆盖第一个 …

testing api integration-testing unit-testing wiremock

8
推荐指数
2
解决办法
9721
查看次数

Apache Kafka Producer配置:'request.timeout.ms'VS.'max.block.ms'属性

鉴于以下同步kafka生产者

Properties props = new Properties();
props.put("max.block.ms", 30000);
props.put("request.timeout.ms", 30000);
props.put("retries", 5);

KafkaProducer<String, byte[]> produce = new KafkaProducer<>(props);

//Send message
producer.send(producerRecord).get();
Run Code Online (Sandbox Code Playgroud)

帮助我理解request.timeout.msmax.block.ms生产者配置之间的区别.是否包括所有重试的最长时间?或者每次重试都有自己的超时?

apache-kafka kafka-producer-api

7
推荐指数
2
解决办法
5170
查看次数

主线程/调用线程等待其他线程完成任务的最佳方式:Thread.sleep()、Latch、CompletableFuture 或其他什么?

主线程/调用线程等待其他线程完成任务的最佳方式是什么?我想出了两个选择;可能还有更多。

选项 1 - Thread.sleep()

new Thread(() -> System.out.println("Executed task 1")).start();
new Thread(() -> System.out.println("Executed task 2")).start();
Thread.sleep(1000);
Run Code Online (Sandbox Code Playgroud)

选项 2 - 闩锁

CountDownLatch latch = new CountDownLatch(2);

new Thread(() -> {
        System.out.println("Executed task 1");
        latch.countDown();
    }).start();

new Thread(() -> {
         System.out.println("Executed task 2");
         latch.countDown();
     }).start();

latch.await(1, TimeUnit.SECONDS);
Run Code Online (Sandbox Code Playgroud)

选项 3 - CompletableFuture

CompletableFuture<Void> future1 = CompletableFuture.runAsync(() -> System.out.println("Executed task 1"));
CompletableFuture<Void> future2 = CompletableFuture.runAsync(() -> System.out.println("Executed task 2"));
CompletableFuture.allOf(future1, future2).join();
Run Code Online (Sandbox Code Playgroud)

选项 4 - ??

java multithreading java-threads

0
推荐指数
1
解决办法
37
查看次数