2016-02-23 2 views
2

До сих пор я реализовал процессоры Spring XD, например. например:Как реализовать весну XD?

@MessageEndpoint 
public class MyTransformer 
{ 

    @Transformer(inputChannel = "input", outputChannel = "output") 
    public String transform(String payload) 
    { 
     ... 
    } 
}; 

Однако, я застрял в реализации пользовательской раковины сейчас. Текущая документация не очень полезно, так как он просто настраивает что-то «волшебным образом» через XML:

<beans ...> 

    <int:channel id="input" /> 

    <int-redis:store-outbound-channel-adapter 
     id="redisListAdapter" collection-type="LIST" channel="input" key="${collection}" auto-startup="false"/> 

    <beans:bean id="redisConnectionFactory" 
     class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"> 
     <beans:property name="hostName" value="${host}" /> 
     <beans:property name="port" value="${port}" /> 
    </beans:bean> 

</beans> 

Это будет использовать Redis магазин-исходящую-канальную-адаптер в качестве поглотителя. Однако в документации не указано, как создать простой, общий приемник, который просто имеет один входной канал и потребляет сообщение.

Так может ли кто-нибудь предоставить мне минимальный рабочий пример?

ответ

2

Раковина - это как процессор, но без выходного канала; используйте код @ServiceActivator для вызова вашего кода (который должен иметь возврат void).

@MessageEndpoint 
public class MyService 
{ 

    @ServiceActivator(inputChannel = "input") 
    public void handle(String payload) 
    { 
     ... 
    } 

}; 

EDIT

Для источников, существует два типа:

опрашиваемых (сообщения вытягиваются из источника):

@InboundChannelAdapter(value = "output", 
     poller = @Poller(fixedDelay = "5000", maxMessagesPerPoll = "1")) 
public String next() { 
    return "foo"; 
} 

Message-приводом (где источник толкает сообщения):

@Bean 
public MySource source() { 
    // return my subclass of MessageProducer that has outputChannel injected 
    // and calls sendMessage 
    // or use a simple POJO that uses MessagingTemplate.convertAndSend(foo) 
} 
+0

Выглядит хорошо. Я предполагаю, что аналогичная вещь существует для источников? Потому что это будет следующая вещь, которую я хотел бы попробовать ... – Arne

+1

См. Правки для исходных примеров. –

Смежные вопросы