spring XD: как создать собственный источник http

Мне нужно реализовать собственный источник http с перекрестным происхождением: *.

Как это сделать? Документ Spring XD

Нужны примеры


person yazabara    schedule 06.05.2016    source источник


Ответы (2)


Для разработки собственного исходного кода вам потребуются базовые знания по интеграции Spring. В любом случае вот пример:

Вам потребуется написать 4 файла:

Файл 1:

crossoriginsource.xml

<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:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
        http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration-4.2.xsd">

    <context:component-scan base-package="com.yourbasepackage"></context:component-scan>
    <context:annotation-config></context:annotation-config>

    <!-- The name of the chaannel is output.(Mandatory to have the name as output) -->
    <int:channel id="output"></int:channel>

    <int:inbound-channel-adapter ref="crossOriginHttpCaller" method="makeHttpCall" channel="output"></int:inbound-channel-adapter>
</beans>

crossoriginsource.properties

info.shortDescription = Gets data from cross origin sources.
options_class = com.yourbasepackage.CrossOriginSourceMetadata

CrossOriginSourceMetadata.java

package com.yourbasepackage;

public class CrossOriginSourceMetadata {
    // All the module related configurable properties goes here
    // The properties values for which you would like to take then while defining a stream.
}

CrossOriginHttpCaller.java

@Component
public class CrossOriginHttpCaller {
    public Message<String> makeHttpCall() {
        // your http calling logic goes here
    }
}

После того, как вы разработали модуль, вы должны поддерживать его в определенной структуре папок.

crossoriginsource
    |
    |---config
    |       |--crossoriginsource.xml
    |       |--crossoriginsource.properties
    |
    |---lib
    |    |--jar containing CrossOriginHttpCaller.java and CrossOriginSourceMetadata.java
    |    |--all the other dependent jars for this module

После того, как вы закончите упаковывать приложение в эту структуру, вы должны скопировать его в xd/modules/source и определить поток примерно так:

stream create --name "test" --definition "crossoriginsource | log" --deploy

Надеюсь это поможет.

person Sai Krishna    schedule 06.05.2016
comment
Это помогло, спасибо! Но не нужно отправлять сообщения - › нужно получать сообщения. Я думаю, что для этого нужно использовать MessageProducerSupport. Это правда? - person yazabara; 10.05.2016

Нужно реализовать MessageProducerSupport.

С заголовками ответа: response.setHeader("Access-Control-Allow-Origin", "*");

Например: fork spring-xd-http-extension.

Посмотрите в качестве примера NettyHttpInboundChannelAdapter.

person yazabara    schedule 10.05.2016