我已经配置了RabbitMQ集群,并在RabbitMQ上通过这样的配置使用Spring Cloud Stream:
if (this.assignments && this.assignments[i] && this.assignments[i].User && user === this.assignments[i].User.id)
和application.yml
import org.springframework.cloud.stream.annotation.Input;
import org.springframework.messaging.SubscribableChannel;
public interface FileChangedSink {
String INPUT = "fileChanged";
@Input(INPUT)
SubscribableChannel fileChanged();
}
版本:
spring:
cloud:
stream:
bindings:
fileChanged:
destination: file.changed
binder: stream_rabbit
consumer:
max-attempts: 1
binders:
stream_rabbit:
type: rabbit
environment:
spring:
rabbitmq:
host: ${RABBITMQ_HOST}
port: ${RABBITMQ_NODE_PORT_NUMber}
username: ${RABBITMQ_DEFAULT_USER}
password: ${RABBITMQ_DEFAULT_PASS}
virtual-host: ${RABBITMQ_DEFAULT_VHOST}
通常,此配置可以正常运行,但是最近我遇到了这样的异常:
Spring Boot Version: 1.5.10.RELEASE
spring-cloud-starter-stream: 1.3.2.RELEASE
spring-cloud-starter-stream-rabbit: 1.3.3.RELEASE
注意:此错误是随机的,通常我的配置可以正常运行。
从错误中我可以了解到,在流尝试连接到队列之前并没有创建队列。
所以我的问题是它如何发生以及如何预防这种情况?