spring-boot - Spring Cloud Stream Listener 没有暂停/等待集成测试代码中的消息
问题描述
我有一个通过 Spring Cloud Stream 连接到 RabbitMQ 的应用程序,它运行良好。
对于集成测试用例,我正在尝试使用示例 - https://github.com/piomin/sample-message-driven-microservices/blob/master/account-service/src/test/java/pl/piomin/services/ account/OrderReceiverTest.java
但是,在我的情况下,我的应用程序会在某个时间间隔内发回 3 条消息。因此,如果我输入以下行,它会获取消息,但如果获取消息有延迟。
int i = 1;
while (i > 0) {
Message<String> received = (Message<String>) collector.forChannel(channels.statusMessage()).poll();
if (received != null) {
LOGGER.info("Order response received: {}", received.getPayload());
}
}
- 因此,除了我的自定义轮询之外,有什么方法可以让我等待并轮询我的消息,并在我收到这些消息时停止?
- 我想根据不同通道的响应路由密钥获取选择消息。可能吗 ?--> 例子:如果 routingKey 是 "InProcess" ,它应该去 Inprocess 方法。
解决方案
1)您的问题根本不清楚,请对其进行扩展并准确解释您的意思。
2) 路由键在 Rabbit 内部用于路由到不同的队列,它们在框架内不用于路由到通道或方法。
但是,您可以condition
在@StreamListener
(匹配headers['amqp_receivedRoutingKey
]`)上使用 a,但最好将消息路由到不同的队列。
推荐阅读
- android - lateinit 属性 onItemClickCallback 尚未初始化
- php - 使用 Ajax 使用 formData 发送另一个数据
- python-3.x - 在 Python 中理解这个 [param, value] = line.split(":", 1)
- php - 如何提取另一台服务器上的 zip 文件?
- mysql - mysql错误“操作数应包含1列”当计算多列中的出现时
- amazon-web-services - 在 AWS Cloudwatch Logs Insights 中处理单引号
- .htaccess - htaccess 没有将 https 重定向到子文件夹
- rust - Rust 匹配模式:为特定情况绑定文字值
- php - 返回数据时,我遇到了ajax问题
- ios - 更改 AudioUnit 扩展的显示名称