java - 当应用程序没有生产者时,如何让 Spring Cloud Stream 创建 RabbitMQ 队列和绑定?
问题描述
我正在使用 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
我添加了多个消费者绑定:
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
例如,我在这里读到应该添加requiredGroups
到生产者以自动创建队列和绑定。但是我的应用程序不产生任何消息,它只是使用其他应用程序发布的消息,所以我没有定义任何生产者。我试图修改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 流在启动时创建队列和绑定?
解决方案
我们通常只在生产者端提供交换;required-groups
除非设置,否则我们不会提供队列。
在消费者方面,我们总是提供队列(和交换)。
如果这没有发生,那就是其他问题;你有@EnableBinding
吗?
显示您的应用程序代码。
推荐阅读
- python-3.x - 在 IPython 中运行 Drive API Quickstart 会导致 UserWarning 和无法识别的参数
- java - JDL 导入解析成功,但生成的实体不匹配
- c# - 为什么 mongoDB c# 驱动程序会出现间歇性错误 DnsClient.DnsResponseException: Header id mismatch
- javascript - 使用 jQuery 在页面底部弹出 Cookie
- symfony4 - Symfony4“@ParamConverter 注释找不到对象”404 错误
- java - 为什么在 ExecutorService 中完成的线程比启动的线程少?
- jquery - SQL 数据库:更新表
- python - 在给出起始位置但向后的列表中找到第一个重合的索引
- vue.js - 带有 vue-chartjs 的 Vue.js - 从 API 中提取数据
- node.js - re.params,从Node js中的外部函数获取(名称或值)?