Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.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 integration 基于路由器条件的SI-kafka消息流_Spring Integration_Apache Kafka - Fatal编程技术网

Spring integration 基于路由器条件的SI-kafka消息流

Spring integration 基于路由器条件的SI-kafka消息流,spring-integration,apache-kafka,Spring Integration,Apache Kafka,要求:希望在inMessageHandler中接收/处理inMessage,在emailMessageHandler中接收/处理emailMessage 问题:(如果消费者配置的消费者组id不同)消息在这两种情况下一直流动到ConsumerServiceHandler的转换方法,但在emailMessageHandler中的emailMessage中没有得到它。(但在inMessageHandler中针对inMessage) 问题:(如果消费者配置的消费者组id相同)消息正在从ConsumerS

要求:希望在inMessageHandler中接收/处理inMessage,在emailMessageHandler中接收/处理emailMessage

问题:(如果消费者配置的消费者组id不同)消息在这两种情况下一直流动到ConsumerServiceHandler的转换方法,但在emailMessageHandler中的emailMessage中没有得到它。(但在inMessageHandler中针对inMessage)

问题:(如果消费者配置的消费者组id相同)消息正在从ConsumerServiceHandler的转换方法流到emailMessageHandler中的emailMessage,但在inMessageHandler中根本没有接收到inMessage(甚至在ConsumerServiceHandler的转换方法中也没有)

您能告诉我这里有什么问题吗?我如何根据主题id在不同的服务类别上接收不同的消息进行处理

请在下面找到配置

    <int-kafka:producer-context id="kafkaProducerContext">
    <int-kafka:producer-configurations>
        <int-kafka:producer-configuration broker-list="localhost:9092"
                   key-class-type="java.lang.String"
                   value-class-type="com.test.EmailMessageVo"
                   topic="emailMessag_topic"
                   value-encoder="emailvalueEncoder"
                   key-encoder="kafkaSerializer"
                   compression-type="none"/>
        <int-kafka:producer-configuration broker-list="localhost:9092"
           key-class-type="java.lang.String"
               value-class-type="com.test.InMessageVo"
                   topic="inMessage_topic"
           value-encoder="invalueEncoder"
                   key-encoder="kafkaSerializer"
                   compression-type="none"/>
    </int-kafka:producer-configurations>
</int-kafka:producer-context>



 <bean id="invalueEncoder" class="org.springframework.integration.kafka.serializer.avro.AvroReflectDatumBackedKafkaEncoder">
   <constructor-arg value="com.test.InMessageVo" />






您应该与我们分享您的
ConsumerServiceHandler
的功能。只是因为您的逻辑有点奇怪,将
的结果作为
消息
,其中它是一条
消息,带有
payload`作为主题及其消息的分区映射

使用相同的
组id
我们(您?)最终会遇到这样一个问题,即最后一个配置将覆盖上一个配置:

consumerConfigurationsMap.put(consumerConfiguration.getAttribute("group-id"),
                consumerConfigurationBeanDefinition);

您应该与我们分享您的
ConsumerServiceHandler
的功能。只是因为您的逻辑有点奇怪,将
的结果作为
消息
,其中它是一条
消息,带有
payload`作为主题及其消息的分区映射

使用相同的
组id
我们(您?)最终会遇到这样一个问题,即最后一个配置将覆盖上一个配置:

consumerConfigurationsMap.put(consumerConfiguration.getAttribute("group-id"),
                consumerConfigurationBeanDefinition);

感谢@ArtemBilan的友好回复。请在此处找到consumerServiceHandler:consumerServiceHandler:删除主题/分区冗余详细信息/设置主题。发送的消息:Message.withPayload(inMessageVO)/Message.withPayload(emailMessageVO),期望相同,但格式如下:消息总体意图:将不同的消息(inMessageVO/emailMessageVO)路由到不同的处理程序进行处理,请建议,如果可以以更好的方式完成。感谢@ArtemBilan的友好响应,请在此处找到consumerServiceHandler:consumerServiceHandler:删除主题/分区冗余详细信息/设置主题。已发送消息:Message.withPayload(inMessageVO)/Message.withPayload(emailMessageVO),期望相同,但格式如下:消息总体意图:将不同的消息(inMessageVO/emailMessageVO)路由到不同的处理程序进行处理。如果可以以更好的方式进行处理,请提出建议。
   <int:channel id="emailMessage_topic_channel">
    <int:queue />
    <bean id="inMessageService" class="com.test.inMessageHandler" />

     <bean id="emailMessageService" class="com.test.emailMessageHandler" />

      <int:service-activator id="advicedSa1" input-channel="inMessage_topic_channel" ref="inMessageService"method="execute">

      <int:service-activator id="advicedSa2" input-channel="emailMessage_topic_channel" ref="emailMessageService"method="execute" >

       <int:router input-channel="receiveMessageFromKafka" expression="headers.topic">
       <int:mapping value="inMessage_topic" channel="inMessage_topic_channel"/>
       <int:mapping value="emailMessage_topic" channel="emailMessage_topic_channel"/>
consumerConfigurationsMap.put(consumerConfiguration.getAttribute("group-id"),
                consumerConfigurationBeanDefinition);