Here is what I'm trying to achieve. Poll an HTTP API once every 15 minutes and process the data retrieved from this. We plan to use Spring Integration. I'm new to this. So with little understanding, I've created an outbound gateway and added poller for the same, but getting the below error.
Also, can someone tell me how can I use transformer to process the data from the outbound gateway?
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).
My int-config.xml file is
<?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>
Can someone tell me why am I getting this error? Thanks in advance guys!