Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.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
Spring将XML集成到Java_Java_Spring_Spring Integration - Fatal编程技术网

Spring将XML集成到Java

Spring将XML集成到Java,java,spring,spring-integration,Java,Spring,Spring Integration,如何将此代码转换为Java配置 <int-kafka:outbound-channel-adapter id="mainOutboundChannelAdapter" kafka-producer-context-ref="kafkaProducerContext" channel="mainOutboundTopicChanel"> </int-kafka:outbound-channel-adapter> 是的,你可以

如何将此代码转换为Java配置

<int-kafka:outbound-channel-adapter
        id="mainOutboundChannelAdapter"
        kafka-producer-context-ref="kafkaProducerContext"
        channel="mainOutboundTopicChanel">
</int-kafka:outbound-channel-adapter>

是的,你可以。请查找最新的:

您的案例可能如下所示:

@Bean
public IntegrationFlow sendToKafkaFlow(String serverAddress) {
    return f -> f.<String>split(p -> FastList.newWithNValues(100, () -> p), null)
            .handle(kafkaMessageHandler(serverAddress));
}

private KafkaProducerMessageHandlerSpec kafkaMessageHandler(String serverAddress) {
    return Kafka.outboundChannelAdapter(props -> props.put("queue.buffering.max.ms", "15000"))
            .messageKey(m -> m.getHeaders().get(IntegrationMessageHeaderAccessor.SEQUENCE_NUMBER))
            .addProducer(TEST_TOPIC, serverAddress, this::producer);
}

private void producer(KafkaProducerMessageHandlerSpec.ProducerMetadataSpec metadata) {
    metadata.async(true)
            .batchNumMessages(10)
            .valueClassType(String.class)
            .<String>valueEncoder(String::getBytes)
            .keyEncoder(new IntEncoder(null));
}
当我们转到
KafkaOutboundChannelAdapterParser
并看到它填充了
BeanDefinition

final BeanDefinitionBuilder kafkaProducerMessageHandlerBuilder =
                                BeanDefinitionBuilder.genericBeanDefinition(KafkaProducerMessageHandler.class);
等等的源代码

更新2

消费者
部分:

@Bean
@InboundChannelAdapter(value = "fromKafkaChannel",
    poller = @Poller(fixedRate = "10", maxMessagesPerPoll = "1"))
public MessageSource<Map<String, Map<Integer, List<Object>>>> kafkaMessageSource() {
    return new KafkaHighLevelConsumerMessageSource<String, String>();
}

@Bean
public KafkaConsumerContext<String, String> kafkaConsumerContext() {
    KafkaConsumerContext<String, String> kafkaConsumerContext = new KafkaConsumerContext<String, String>();
    .....
    kafkaConsumerContext.setConsumerConfigurations(map);
    return kafkaConsumerContext;
}
@Bean
@InboundChannelAdapter(value=“fromKafkaChannel”,
轮询器=@poller(fixedRate=“10”,maxMessagesPerPoll=“1”))
public MessageSource kafkaMessageSource(){
返回新的KafkaHighLevelConsumerMessageSource();
}
@豆子
公共KafkaConsumerContext KafkaConsumerContext(){
KafkaConsumerContext KafkaConsumerContext=新的KafkaConsumerContext();
.....
kafkaConsumerContext.setConsumerConfiguration(地图);
返回kafkaConsumerContext;
}

Hi Artem,谢谢您的回复,我以前也看过这些答案。由于Java8Lambda的特性,我觉得人们会把目光从这些方面移开。对于那些仍然不懂Java8的人来说,常规java可能会更有帮助。。。我理解你(和其他人)的担忧。。。请在我的答案中找到更新。谢谢,作为一名初级开发人员,我仍然在学习如何深入不同的场景等等。你的代码非常有用。如果这不是太多的要求,您是否也会用java配置发布相应的ConsumerContext?我在谷歌上似乎找不到一个稳定的教程。请在我的答案中找到
@InboundChannelAdapter
的更新。请随意为Java配置文档提出一个GitHub问题()。你不知道我被困在这上面多久了。非常感谢。
final BeanDefinitionBuilder kafkaProducerMessageHandlerBuilder =
                                BeanDefinitionBuilder.genericBeanDefinition(KafkaProducerMessageHandler.class);
@Bean
@InboundChannelAdapter(value = "fromKafkaChannel",
    poller = @Poller(fixedRate = "10", maxMessagesPerPoll = "1"))
public MessageSource<Map<String, Map<Integer, List<Object>>>> kafkaMessageSource() {
    return new KafkaHighLevelConsumerMessageSource<String, String>();
}

@Bean
public KafkaConsumerContext<String, String> kafkaConsumerContext() {
    KafkaConsumerContext<String, String> kafkaConsumerContext = new KafkaConsumerContext<String, String>();
    .....
    kafkaConsumerContext.setConsumerConfigurations(map);
    return kafkaConsumerContext;
}