2017-02-06 3 views
3

Я хочу, чтобы получить данные из RSS поток в Java Spring с этим кодом:не может получать данные от RSS Feed в Java Spring

package org.springframework.integration.samples.feed; 

import org.springframework.context.ConfigurableApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 
import org.springframework.messaging.Message; 
import org.springframework.messaging.PollableChannel; 
import com.rometools.rome.feed.synd.SyndEntry; 

public class Feed { 

    public static void main(String[] args) { 
     ConfigurableApplicationContext ac = 
       new ClassPathXmlApplicationContext("META-INF/spring/integration/FeedInboundChannelAdapterSample-context.xml"); 
      PollableChannel feedChannel = ac.getBean("feedChannel", PollableChannel.class); 
     for (int i = 0; i < 10; i++) { 
      Message<SyndEntry> message = (Message<SyndEntry>) feedChannel.receive(1000); 
      if (message != null){ 
       SyndEntry entry = message.getPayload(); 
       System.out.println(entry.getTitle()); 
      } 
      else { 
       break; 
      } 
     } 
     ac.close(); 
} 
} 

FeedInboundChannelAdapterSample-context.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:int="http://www.springframework.org/schema/integration" 
xmlns:int-feed="http://www.springframework.org/schema/integration/feed" 
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd 
     http://www.springframework.org/schema/integration/feed http://www.springframework.org/schema/integration/feed/spring-integration-feed.xsd"> 

<int-feed:inbound-channel-adapter id="feedAdapter" 
        channel="feedChannel" 
        auto-startup="true" 
        url="http://pharmacie.lu/flux_rss.xml"> 
    <int:poller fixed-rate="10000" max-messages-per-poll="100" /> 
</int-feed:inbound-channel-adapter> 

<int:channel id="feedChannel"> 
    <int:queue/> 
</int:channel> 

URL-адрес с кормом: http://pharmacie.lu/flux_rss.xml

Проблема в том, что я г и др нулевое сообщение назад, и я не знаю, почему:

14:32:13.614 INFO [main][org.springframework.integration.config.IntegrationRegistrar] No bean named 'integrationHeaderChannelRegistry' has been explicitly defined. Therefore, a default DefaultHeaderChannelRegistry will be created. 
    14:32:13.621 DEBUG [main][org.springframework.integration.config.IntegrationRegistrar] The '#jsonPath' SpEL function cannot be registered: there is no jayway json-path.jar on the classpath. 
    14:32:13.621 DEBUG [main][org.springframework.integration.config.IntegrationRegistrar] SpEL function '#xpath' isn't registered: there is no spring-integration-xml.jar on the classpath. 
    14:32:13.739 INFO [main][org.springframework.integration.config.DefaultConfiguringBeanFactoryPostProcessor] No bean named 'errorChannel' has been explicitly defined. Therefore, a default PublishSubscribeChannel will be created. 
    14:32:13.743 INFO [main][org.springframework.integration.config.DefaultConfiguringBeanFactoryPostProcessor] No bean named 'taskScheduler' has been explicitly defined. Therefore, a default ThreadPoolTaskScheduler will be created. 
    SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 
    SLF4J: Defaulting to no-operation (NOP) logger implementation 
    SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 
    14:32:14.075 DEBUG [main][org.springframework.integration.config.GlobalChannelInterceptorProcessor] No global channel interceptors. 
    14:32:14.078 INFO [main][org.springframework.integration.endpoint.EventDrivenConsumer] Adding {logging-channel-adapter:_org.springframework.integration.errorLogger} as a subscriber to the 'errorChannel' channel 
    14:32:14.078 INFO [main][org.springframework.integration.channel.PublishSubscribeChannel] Channel 'org[email protected]3b764bce.errorChannel' has 1 subscriber(s). 
    14:32:14.078 INFO [main][org.springframework.integration.endpoint.EventDrivenConsumer] started _org.springframework.integration.errorLogger 
    14:32:14.080 INFO [main][org.springframework.integration.endpoint.SourcePollingChannelAdapter] started feedAdapter 
    14:32:14.085 TRACE [main][org.springframework.integration.channel.QueueChannel] preReceive on channel 'feedChannel' 
    14:32:14.125 DEBUG [task-scheduler-1][org.springframework.integration.feed.inbound.FeedEntryMessageSource] EVENT: Feed Polled. URL = http://pharmacie.lu/flux_rss.xml 
    14:32:14.242 DEBUG [task-scheduler-1][org.springframework.integration.feed.inbound.FeedEntryMessageSource] retrieved feed at url 'http://pharmacie.lu/flux_rss.xml' 
    14:32:14.243 DEBUG [task-scheduler-1][org.springframework.integration.endpoint.SourcePollingChannelAdapter] Received no Message during the poll, returning 'false' 
    14:32:15.086 TRACE [main][org.springframework.integration.channel.QueueChannel] postReceive on channel 'feedChannel', message is null 
    14:32:15.091 INFO [main][org.springframework.integration.endpoint.SourcePollingChannelAdapter] stopped feedAdapter 
    14:32:15.091 INFO [main][org.springframework.integration.endpoint.EventDrivenConsumer] Removing {logging-channel-adapter:_org.springframework.integration.errorLogger} as a subscriber to the 'errorChannel' channel 
    14:32:15.091 INFO [main][org.springframework.integration.channel.PublishSubscribeChannel] Channel 'org[email protected]3b764bce.errorChannel' has 0 subscriber(s). 
    14:32:15.092 INFO [main][org.springframework.integration.endpoint.EventDrivenConsumer] stopped _org.springframework.integration.errorLogger 

Когда я использую URL rss.cnn.com/rss/cnn_topstories.rss вместо этого, код работает.

(Код из примера канал модуля Spring Integration RSS на GitHub: https://github.com/spring-projects/spring-integration-samples/tree/master/basic/feed)

Мой вопрос почему этот код выше работает с URL в примере, но не с адресом PHARMACIE. lu/flux_rss.xml?

ответ

2

В настоящее время FeedEntryMessageSource в spring-integration ожидает, что записи в фиде будут иметь некоторые последние измененные даты, но в корме pharmacie.lu их нет, поэтому все записи игнорируются и содержимое не будет возвращено.