这是帖子MaprStream with spring integration Kafka Producer issue
的扩展名在向maprstream发布消息时尝试实现同步属性时,我遇到多个KafkaProducerMessageHandler的问题
@Autowired
Qualifier("abcHandler.handler")
private KafkaProducerMessageHandler abcHandler;
@Autowired
Qualifier("xyzHandler.handler")
private KafkaProducerMessageHandler xyzHandler;
@PostConstruct
public void init() {
this.abcHandler.setSync(true);
this.xyzHandler.setSync(true);
}
Bean配置:
<int:chain input-channel="inputToKafka">
<int-kafka:outbound-channel-adapter
id="abcHandler"
kafka-template="template"
topic="${maprstream.stream.topicname}" >
</int-kafka:outbound-channel-adapter>
</int:chain>
<int:chain input-channel="inputToKafka1">
<int-kafka:outbound-channel-adapter
id="xyzHandler"
kafka-template="template1"
topic="${maprstream.stream.topicname1}" >
</int-kafka:outbound-channel-adapter>
</int:chain>
我在尝试加载bean时遇到以下异常。
在上下文初始化期间遇到异常 - 取消刷新尝试:org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名称为&#39; maprStreamProducerHandlerSync的bean时出错:通过字段表示不满意的依赖关系&#39; abcHandler&#39; 嵌套异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:没有类型的限定bean &#39; org.springframework.integration.kafka.outbound.KafkaProducerMessageHandler&#39;可用:预计至少有1个豆有资格作为autowire候选者。 依赖注释:{@ org.springframework.beans.factory.annotation.Autowired(required = true), @ org.springframework.beans.factory.annotation.Qualifier(值= abcHandler.handler)}
有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
为什么在<chain/>
s内有这些单个组件?链通常用于分组多个元素。
见the documentation about chains;向下滚动到&#39; id&#39; Attribute` 强>
<int:chain id="chain1" input-channel="inputToKafka">
<int-kafka:outbound-channel-adapter
id="abcHandler"
kafka-template="template"
topic="${maprstream.stream.topicname}" >
</int-kafka:outbound-channel-adapter>
</int:chain>
链中的组件获取复合bean名称。在这种情况下,它将是chain1$child.abcHandler.handler
。自动接线时,如果有多个适配器,则需要在@Qualifier
中使用此值。