Rabbitmq 一个SCDF源,2个处理器,但每个项目仅1个处理器
我的用例是这方面的一个变体: 在本例中,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设置还是完全其他的设置 更新: 我补充说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
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源应用程序,或仅用于名为“兔子”的应用程序。它由处理器使用者而不是源应用程序执行。明白。你能确认源不一定是兔子源应用程序吗?源不相关。看一看绑定在他们身上的交易所和排队,明白了。我会在早上做第一件事。非常感谢。请参阅和。