Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring引导集成url分页解决方案_Java_Spring_Spring Boot_Spring Integration - Fatal编程技术网

Java Spring引导集成url分页解决方案

Java Spring引导集成url分页解决方案,java,spring,spring-boot,spring-integration,Java,Spring,Spring Boot,Spring Integration,我使用spring boot integration连接到restful Web服务并从中检索数据,以下是我的部分代码: @Bean public PollerMetadata downloadTrigger() { PeriodicTrigger trigger = new PeriodicTrigger(config.getDownloadInterval()); trigger.setFixedRate(true); PollerMetadata pollerMet

我使用spring boot integration连接到restful Web服务并从中检索数据,以下是我的部分代码:

@Bean
public PollerMetadata downloadTrigger()
{
    PeriodicTrigger trigger = new PeriodicTrigger(config.getDownloadInterval());
    trigger.setFixedRate(true);
    PollerMetadata pollerMetadata = new PollerMetadata();
    pollerMetadata.setTrigger(trigger);
    pollerMetadata.setMaxMessagesPerPoll(1);
    return pollerMetadata;
}

@Bean(name = PollerMetadata.DEFAULT_POLLER)
public PollerMetadata poller()
{
    PeriodicTrigger trigger = new PeriodicTrigger(10);
    trigger.setFixedRate(true);
    PollerMetadata pollerMetadata = new PollerMetadata();
    pollerMetadata.setTrigger(trigger);
    return pollerMetadata;
}

@InboundChannelAdapter(value = "channel1", poller = @Poller("downloadTrigger"))
public ResponseEntity<AppsItem[]> download()
{
    String url = "https://example.com/?page{pageNumber}";
    try
    {
        SSLUtil.turnOffSslChecking();
    }
    catch (Exception e)
    {

    }

    HttpHeaders requestHeaders = new HttpHeaders();
    requestHeaders.setAccept(Collections.singletonList(new MediaType("application","json")));
    HttpEntity<?> requestEntity = new HttpEntity<Object>(requestHeaders);
    template.getMessageConverters().add(new MappingJackson2HttpMessageConverter());


    ResponseEntity<AppsItem[]> responseEntity = template.exchange(url, HttpMethod.GET, requestEntity, AppsItem[].class, 10, 1);


    return responseEntity;
}

@Splitter(inputChannel = "channel1", outputChannel = "channel2")
public List<AppsItem> scrape(ResponseEntity<AppsItem[]> payload)
{

    //do something;
}
我需要像下面这样的东西:

    @InboundChannelAdapter(value = "channel1", poller = @Poller("downloadTrigger"))
public ResponseEntity<AppsItem[]> download()
{
    String url = "https://example.com/?page{pageNumber}";
    try
    {
        SSLUtil.turnOffSslChecking();
    }
    catch (Exception e)
    {

    }

    HttpHeaders requestHeaders = new HttpHeaders();
    requestHeaders.setAccept(Collections.singletonList(new MediaType("application","json")));
    HttpEntity<?> requestEntity = new HttpEntity<Object>(requestHeaders);
    template.getMessageConverters().add(new MappingJackson2HttpMessageConverter());


    ResponseEntity<AppsItem[]> responseEntity;
        int i = 0;
        do
        {
            i++;
            responseEntity = template.exchange(url, HttpMethod.GET, requestEntity, AppsItem[].class, 10, i);
            scraper.parse(responseEntity);
            LOG.info("entry={}", "");
            //Send response to the next channel in this loop 
        }
        while (responseEntity.hasBody());


    return responseEntity;
}
从downloadTrigger中删除setMaxMessagesPerPoll1,每次轮询上的轮询器将继续调用下载,直到返回null


增加每次调用的页数,并在没有更多页面时重置;轮询器将在间隔后运行。

您能发布一些代码吗?我是初学者,我没有任何接收方法。对不起。我是说下载。内部有一个receive方法调用你的。你救了我的命,兄弟
    @InboundChannelAdapter(value = "channel1", poller = @Poller("downloadTrigger"))
public ResponseEntity<AppsItem[]> download()
{
    String url = "https://example.com/?page{pageNumber}";
    try
    {
        SSLUtil.turnOffSslChecking();
    }
    catch (Exception e)
    {

    }

    HttpHeaders requestHeaders = new HttpHeaders();
    requestHeaders.setAccept(Collections.singletonList(new MediaType("application","json")));
    HttpEntity<?> requestEntity = new HttpEntity<Object>(requestHeaders);
    template.getMessageConverters().add(new MappingJackson2HttpMessageConverter());


    ResponseEntity<AppsItem[]> responseEntity;
        int i = 0;
        do
        {
            i++;
            responseEntity = template.exchange(url, HttpMethod.GET, requestEntity, AppsItem[].class, 10, i);
            scraper.parse(responseEntity);
            LOG.info("entry={}", "");
            //Send response to the next channel in this loop 
        }
        while (responseEntity.hasBody());


    return responseEntity;
}