почему счетчик ответов весенней загрузки не совпадает с количеством запросов - PullRequest
0 голосов
/ 11 ноября 2018

Я заканчиваю простую весеннюю загрузку веб-сервиса, вот код контроллера

package com.example.ly.FirstWebService;

import org.springframework.web.bind.annotation.RestController;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


@RestController
public class HelloController {
   Logger logger = LoggerFactory.getLogger(HelloController.class);

@RequestMapping("/")
public String index() {
    //logger.trace("This is a TRACE message.");
    //logger.debug("This is a DEBUG message.");
    //logger.info("This is an INFO message.");
    //logger.warn("This is a WARN message.");
    //logger.error("You guessed it, an ERROR message.");

    return "Greetings from Spring Boot!";
}

@RequestMapping(value = { "/ocs_new" })
@ResponseBody
public Map<String, Object> getRoute(@RequestParam("sid") String id,@RequestParam("calling") String calling,@RequestParam("called") String called,@RequestParam("trunk_in") String trunk_in) {
    logger.info("ocs_new command income with sid ." + id);
    Map<String, Object> mRet = new HashMap<String, Object>();
    mRet.put("duration", 120);

    Map<String,Object> map1 = new HashMap<String,Object>();
    map1.put("nap","nap256");
    map1.put("src","60133878300");
    map1.put("dst","800113803088900");

    Map<String,Object> map2 = new HashMap<String,Object>();
    map2.put("nap","nap369");
    map2.put("src","60133878399");
    map2.put("dst","800213803088999");

    List<Map> jsonObjects = new ArrayList<Map>();
    jsonObjects.add(map1);
    jsonObjects.add(map2);
    mRet.put("routetable",jsonObjects);       

    mRet.put("next_update_time", 120);  
    mRet.put("cmd", "ocs_new");        
    mRet.put("sid", id);           
    mRet.put("result", 0);
    mRet.put("msg", null);


    return mRet;
}



@RequestMapping(value = { "/ocs_start" })
@ResponseBody
public Map<String, Object> callstart(@RequestParam("sid") String id,@RequestParam("a_setup_time") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime a_setup_time,@RequestParam("a_connect_time") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime a_connect_time,@RequestParam("b_setup_time") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime b_setup_time,@RequestParam("b_connect_time") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime b_connect_time,@RequestParam("connected_trunk") String connected_trunk) {
    logger.info("ocs_start command income with sid ." + id);
    Map<String, Object> mRet = new HashMap<String, Object>();
    mRet.put("cmd", "ocs_start");  

    mRet.put("result", 0);      
    mRet.put("sid", id);           
    mRet.put("msg", "queued for processing");


    return mRet;
}




@RequestMapping(value = { "/ocs_end" })
@ResponseBody
public Map<String, Object> callend(@RequestParam("sid") String id,@RequestParam("duration_a") int duration_a,@RequestParam("duration_b") int duration_b,@RequestParam("a_hangup_time") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime a_hangup_time,@RequestParam("b_hangup_time") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime b_hangup_time) {
    logger.info("ocs_end command income with sid ." + id);
    Map<String, Object> mRet = new HashMap<String, Object>();
    mRet.put("cmd", "ocs_end");  

    mRet.put("result", 0);      
    mRet.put("sid", id);           
    mRet.put("msg", "queued for processing");


    return mRet;
}

}

для клиентской стороны, я использую программу на c #, которая использует многопоточность для отправки http-запроса на сервер, потому что я регистрирую каждый запрос, когда он приходит

logger.info("ocs_new command income with sid ." + id);

количество ответов должно совпадать с количеством запросов, но иногда я вижу, что ответ больше, чем запрос. скажем, если я отправлю 5000 запросов, возможно, количество ответов будет 5003.

Есть ли проблемы с моим контроллером?

Я также регистрирую количество запросов на стороне клиента при отправке на сервер, я уверен, что клиент отправит ровно 5000 запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...