gpt4 book ai didi

java - 当应用程序没有生产者时,如何让 Spring Cloud Stream 创建 RabbitMQ 队列并绑定(bind)?

转载 作者:行者123 更新时间:2023-12-02 11:11:32 28 4
gpt4 key购买 nike

我使用的是 Spring Boot 2.0.1,Spring 云依赖项是从以下位置导入的:

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.RC1</version>
<type>pom</type>
<scope>import</scope>
</dependency>

我相信感兴趣的依赖关系是:

<dependencies>
...
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-rabbit</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-reactive</artifactId>
</dependency>
...
</dependencies>

在我的 application.yaml 中,我添加了多个消费者绑定(bind):

spring:
cloud:
stream:
bindings:
input1:
bindingRoutingKey: key1.#
binder: rabbit
group: group1
destination: dest-group1
transacted: true
input2:
bindingRoutingKey: key2.#
binder: rabbit
group: group2
destination: dest-group2
transacted: true

我读过例如 here应该将 requiredGroups 添加到生产者中,以便自动创建队列和绑定(bind)。但是,我的应用程序不生成任何消息,它只是使用其他应用程序发布的消息,因此我没有定义任何生成器。我尝试修改 application.yaml 文件以仅添加一个虚拟生产者:

spring:
cloud:
stream:
bindings:
dummyProducer:
producer:
requiredGroups: group1,group2
input1:
bindingRoutingKey: key1.#
binder: rabbit
group: group1
destination: dest-group1
transacted: true
input2:
bindingRoutingKey: key2.#
binder: rabbit
group: group2
destination: dest-group2
transacted: true

但这行不通。所以我的问题是:

我应该如何修改我的 application.yaml 文件(如果需要,还可以修改代码)以使 Spring Cloud 流在启动时创建队列和绑定(bind)?

最佳答案

我们通常只在生产者端提供交换;除非设置了 required-groups,否则我们不会配置队列。

在消费者方面,我们始终提供队列(和交换)。

如果没有发生这种情况,则说明有其他问题;你有@EnableBinding吗?

显示您的应用程序代码。

关于java - 当应用程序没有生产者时,如何让 Spring Cloud Stream 创建 RabbitMQ 队列并绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50584370/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com