Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.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
Rabbitmq 一个SCDF源,2个处理器,但每个项目仅1个处理器_Rabbitmq_Spring Cloud Stream_Spring Cloud Dataflow - Fatal编程技术网

Rabbitmq 一个SCDF源,2个处理器,但每个项目仅1个处理器

Rabbitmq 一个SCDF源,2个处理器,但每个项目仅1个处理器,rabbitmq,spring-cloud-stream,spring-cloud-dataflow,Rabbitmq,Spring Cloud Stream,Spring Cloud Dataflow,我的用例是这方面的一个变体: 在本例中,1个源向rabbitmq发送一个项,并且两个处理器都获取该项 我想要相反的结果。我希望源向rabbitmq发送项,但每个项只有一个处理器处理 让我们假设我有: 1个源命名为源 名为processor1和processor2的2个处理器 所以源发射:A,B,C到rabbitmq RabbitMQ将发出 无论哪个处理器先得到一个,都会处理它——假设processor1是幸运的,并处理一个 然后RabbitMQ将发出B 由于processor1忙于A而proce

我的用例是这方面的一个变体:

在本例中,1个源向rabbitmq发送一个项,并且两个处理器都获取该项

我想要相反的结果。我希望源向rabbitmq发送项,但每个项只有一个处理器处理

让我们假设我有:

1个源命名为源 名为processor1和processor2的2个处理器

所以源发射:A,B,C到rabbitmq

RabbitMQ将发出

无论哪个处理器先得到一个,都会处理它——假设processor1是幸运的,并处理一个

然后RabbitMQ将发出B

由于processor1忙于A而processor2处于空闲状态,因此processor2处理B

RabbitMQ将发射C

processor1以A结束,并且处于空闲状态,因此processor1处理C

我提出的Spring云数据流图是:

processorA是上面的那个,processorB是下面的那个

当我部署并运行它时,source发出A、B和C,然后processor1和processor2都接收A、B和C

我不知道我想要的行为是我可以在Spring云数据流中实现的,还是消息删除的答案暗示了有RabbitMQ设置

是设置自动确认标志时发生的情况。通过这种方式,消息一经消费就被确认——因此从队列中消失了

如果是这样的话,我可以在Spring云数据流源中设置它吗,或者它是RabbitMQ设置还是完全其他的设置

更新:

我补充说

spring.cloud.stream.bindings.input.group=consumerGroup
到我的处理器的application.properties文件

不幸的是,两个处理器接收的数据完全相同

是否需要向源的application.properties添加类似的条目

是否需要更改处理器上的批注?目前是:

@Transformer(inputChannel = Processor.INPUT, outputChannel = Processor.OUTPUT)
@Bean
@InboundChannelAdapter(value = Source.OUTPUT, poller = 
     @Poller(fixedDelay = "1000", maxMessagesPerPoll = "1"))
我是否需要以任何方式修改源上的注释?目前是:

@Transformer(inputChannel = Processor.INPUT, outputChannel = Processor.OUTPUT)
@Bean
@InboundChannelAdapter(value = Source.OUTPUT, poller = 
     @Poller(fixedDelay = "1000", maxMessagesPerPoll = "1"))
@Poller的加入是否以任何方式改变了这一点

更新:


属性名为spring.cloud.stream.instanceCount吗?

对于流应用程序,您需要设置…consumer.group属性,以便它们都在同一组中并竞争消息


但SCDF应该会自动实现这一点。

是否可用于任何SCDF源应用程序,或仅用于名为“兔子”的应用程序。它由处理器使用者而不是源应用程序执行。明白。你能确认源不一定是兔子源应用程序吗?源不相关。看一看绑定在他们身上的交易所和排队,明白了。我会在早上做第一件事。非常感谢。请参阅和。