Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.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 轮询HTTP服务(出站网关)&;Spring集成中使用变压器的过程_Java_Spring_Spring Integration - Fatal编程技术网

Java 轮询HTTP服务(出站网关)&;Spring集成中使用变压器的过程

Java 轮询HTTP服务(出站网关)&;Spring集成中使用变压器的过程,java,spring,spring-integration,Java,Spring,Spring Integration,这就是我想要实现的目标。每15分钟轮询一次HTTP API,并处理从中检索到的数据。我们计划使用Spring集成。我是新来的。因此,在不太了解的情况下,我创建了一个出站网关,并为其添加了轮询器,但得到以下错误 另外,有人能告诉我如何使用transformer来处理来自出站网关的数据吗 Error creating bean with name 'org.springframework.integration.config.ConsumerEndpointFactoryBean#0': Invoc

这就是我想要实现的目标。每15分钟轮询一次HTTP API,并处理从中检索到的数据。我们计划使用Spring集成。我是新来的。因此,在不太了解的情况下,我创建了一个出站网关,并为其添加了轮询器,但得到以下错误

另外,有人能告诉我如何使用transformer来处理来自出站网关的数据吗

Error creating bean with name 'org.springframework.integration.config.ConsumerEndpointFactoryBean#0':
Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 
A poller should not be specified for endpoint 'org.springframework.integration.config.ConsumerEndpointFactoryBean#0', 
since 'in' is a SubscribableChannel (not pollable).
我的int-config.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"
    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/http http://www.springframework.org/schema/integration/http/spring-integration-http.xsd
        http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm.xsd"
    xmlns:int="http://www.springframework.org/schema/integration"
    xmlns:oxm="http://www.springframework.org/schema/oxm"
    xmlns:int-http="http://www.springframework.org/schema/integration/http">

    <int:annotation-config/>

    <!-- Inbound/Outbound Channels -->
    <int:channel id="employeeSearchRequest" />
    <int:channel id="employeeSearchResponse" />

    <int:channel id="userSearchRequest" />
    <int:channel id="userSearchResponse" />


    <int-http:inbound-gateway id="inboundEmployeeSearchRequestGateway"
        supported-methods="GET, POST"
        request-channel="employeeSearchRequest"
        reply-channel="employeeSearchResponse"      
        mapped-response-headers="Return-Status, Return-Status-Msg, HTTP_RESPONSE_HEADERS"
        view-name="/employee"
        path="/services/employee/{id}/search"
        reply-timeout="50000">

        <int-http:header name="employeeId" expression="#pathVariables.id"/>

    </int-http:inbound-gateway>

    <int-http:inbound-gateway id="inboundUserSearchRequestGateway"
        supported-methods="GET, POST"
        request-channel="userSearchRequest"
        reply-channel="userSearchResponse"      
        mapped-response-headers="Return-Status, Return-Status-Msg, HTTP_RESPONSE_HEADERS"
        view-name="/users"
        path="/users/{id}/search"
        reply-timeout="50000">

        <int-http:header name="userId" expression="#pathVariables.id"/>

    </int-http:inbound-gateway>

    <!-- Consume WS Sample -->
    <int:channel id="in" />
    <int:channel id="out" />

     <int-http:outbound-gateway request-channel="in" reply-channel="out"
        url="http://echo.jsontest.com/key/value/one/two" http-method="GET" 
        expected-response-type="java.lang.String">
        <int:poller fixed-rate="20000"/>
    </int-http:outbound-gateway>

    <int:transformer input-channel="in"
    output-channel="out" ref="hTTPTransformer" />

    <!-- Consume WS Sample Ends -->


    <!-- Note: The default parameter name for favorParameter is "format". For instance, when this flag is true, a request for /services/employee/{id}/search?format=json will result
            in an MappingJacksonJsonView being resolved, while the Accept header can be the browser-defined text/html,application/xhtml+xml  -->

    <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
        <property name="order" value="1" />
        <property name="contentNegotiationManager">
            <bean class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
                <property name="defaultContentType" value="application/json"/>
                <property name="favorParameter" value="true"/>
                <property name="ignoreAcceptHeader" value="true" />
                <property name="mediaTypes">
                    <map>
                        <entry key="json" value="application/json" />
                        <entry key="xml" value="application/xml" />
                    </map>
                </property>
            </bean>
        </property>
        <property name="defaultViews">
            <list>
                <bean
                    class="org.springframework.integration.samples.rest.json.view.ExtendedMappingJacksonJsonView" >
                    <property name="objectMapper" ref="jaxbJacksonObjectMapper"/>
                </bean>
                <bean class="org.springframework.web.servlet.view.xml.MarshallingView">
                    <constructor-arg ref="marshaller"/>
                </bean>
            </list>
        </property>
    </bean>

    <oxm:jaxb2-marshaller id="marshaller" context-path="org.springframework.integration.samples.rest.domain" />

    <int:service-activator id="employeeServiceActivator"
                    input-channel="employeeSearchRequest"
                    output-channel="employeeSearchResponse"
                    ref="employeeSearchService"
                    method="getEmployee"
                    requires-reply="true"
                    send-timeout="60000"/>

    <int:service-activator id="userServiceActivator"
                    input-channel="userSearchRequest"
                    output-channel="userSearchResponse"
                    ref="userSearchService"
                    method="getUsers"
                    requires-reply="true"
                    send-timeout="60000"/>                  

    <bean id="jaxbJacksonObjectMapper" class="org.springframework.integration.samples.rest.json.JaxbJacksonObjectMapper"/>

</beans>


有人能告诉我为什么我会犯这个错误吗?提前谢谢各位

第一次更新:对于轮询,添加入站通道适配器有效

<int-http:outbound-gateway request-channel="in" reply-channel="out"
        url="http://echo.jsontest.com/key/value/one/two" http-method="GET" 
        expected-response-type="java.lang.String">
    </int-http:outbound-gateway>

<int:inbound-channel-adapter channel="in" expression="''">
        <int:poller fixed-delay="60000"></int:poller>
    </int:inbound-channel-adapter>

第二次更新:为了将响应转换为bean,添加了以下代码

<int:json-to-object-transformer input-channel="out" 
output-channel="testChannel" type="org.springframework.integration.samples.rest.domain.PlaceholderBean"/>

<int:service-activator method="dummyMethod" input-channel="testChannel" ref="dummyService"/> 


最后,我能够轮询HTTP服务,获取数据并处理它!谢谢@JensKrogsboell的帮助

网关不用于轮询-它是由请求通道上的消息触发的。我猜您需要一个http入站适配器。或者http出站适配器-不确定。@JensKrogsboell感谢您指出这一点。添加入站通道适配器使其轮询!如果可能的话,您能告诉我如何从这个API获取JSON对象并使用transformer处理它吗