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
Apache kafka Spring boot Kafka请求-应答场景_Apache Kafka_Spring Integration_Spring Kafka_Spring Cloud Stream - Fatal编程技术网

Apache kafka Spring boot Kafka请求-应答场景

Apache kafka Spring boot Kafka请求-应答场景,apache-kafka,spring-integration,spring-kafka,spring-cloud-stream,Apache Kafka,Spring Integration,Spring Kafka,Spring Cloud Stream,我正在实现请求/应答场景的POC,以便使用Kafka移动基于事件的微服务堆栈 春天有两种选择。 我不知道哪一个更好用回复卡夫卡模板或云流 第一个是回复KafkaTemplate,它可以很容易地配置为有专门的频道来回复每个实例的主题。 record.headers().add(新的RecordHeader(KafkaHeaders.REPLY_主题,provider.getReplyChannelName().getBytes()) 消费者不需要知道回复主题的名称,只需收听主题并返回给定的回复主题

我正在实现请求/应答场景的POC,以便使用Kafka移动基于事件的微服务堆栈

春天有两种选择。 我不知道哪一个更好用<代码>回复卡夫卡模板或
云流

第一个是
回复KafkaTemplate
,它可以很容易地配置为有专门的频道来回复每个实例的主题。
record.headers().add(新的RecordHeader(KafkaHeaders.REPLY_主题,provider.getReplyChannelName().getBytes())
消费者不需要知道回复主题的名称,只需收听主题并返回给定的回复主题即可

@KafkaListener(topics=“${kafka.topic.concat request}”)
@森托
公共ConcatReply侦听(ConcatModel请求){
.....
}
第二种选择是结合使用
StreamListener
spring集成
IntegrationFlows
。应配置网关并筛选回复主题

@MessagingGateway
公共接口流网关{
@网关(requestChannel=START,replyChannel=FILTER,replyTimeout=5000,requestTimeout=2000)
字符串进程(字符串有效负载);
}
@豆子
公共集成流headerEnricherFlow(){
返回IntegrationFlows.from(开始)
.enrichHeaders(HeaderEnricherSpec::headerChannel字符串)
.EnrichHeader(headerEnricherSpec->headerEnricherSpec.header(Channels.INSTANCE\u ID,instanceUUID))
.channel(Channels.REQUEST)
.get();
}
@豆子
公共集成流replyFiltererFlow(){
返回IntegrationFlows.from(网关通道.回复)
.filter(Message.class,Message->Channels.INSTANCE_ID.equals(Message.getHeaders().get(“instanceId”))
.频道(过滤器)
.get();
}
建筑答复

@StreamListener(Channels.REQUEST)
@发送至(频道回复)
公共消息处理(消息请求){
指定回复通道是必需的。因此,接收到的回复主题将根据instanceID进行筛选,instanceID是一种解决方法(可能会阻塞网络)。另一方面,DLQ方案通过添加

消费者:
enableDlq:true
使用spring cloud streams在与RabbitMQ和其他功能的互操作性方面看起来很有希望,但目前还没有正式支持请求-应答场景。问题仍然存在,也没有被拒绝。()


欢迎任何建议。

Spring Cloud Stream不是为请求/回复而设计的;它是可以做到的,它并不简单,您必须编写代码

使用
@KafkaListener
框架可以为您处理所有事情


如果您希望它也能与RabbitMQ一起使用,您也可以使用
@RabbitListener
对其进行注释。

Spring Cloud Stream不是为请求/回复而设计的;它是可以做到的,它并不简单,您必须编写代码

使用
@KafkaListener
框架可以为您处理所有事情

如果您希望它也能与RabbitMQ一起使用,还可以使用
@RabbitListener
对其进行注释