Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重试绑定到RabbitMQ exchange的队列_Java_Spring_Spring Boot_Rabbitmq_Microservices - Fatal编程技术网

Java 重试绑定到RabbitMQ exchange的队列

Java 重试绑定到RabbitMQ exchange的队列,java,spring,spring-boot,rabbitmq,microservices,Java,Spring,Spring Boot,Rabbitmq,Microservices,使用SpringBoot和RabbitMQ,我试图创建一个可以有n个队列的exchange,每个微服务一个队列,这样每个微服务都将获得相同的消息 Producer microservice定义了扇出交换。 每个消费者微服务创建一个队列并尝试将其连接到生产者交换 首先启动生产者时,将创建exchange。启动消费者微服务绑定到生产者交换。但是,如果首先启动消费者微服务,它们将不会绑定,因为还没有要绑定的内容,请给出以下日志: 2020-01-13 22:24:49.640 INFO [,,,]

使用SpringBoot和RabbitMQ,我试图创建一个可以有n个队列的exchange,每个微服务一个队列,这样每个微服务都将获得相同的消息

Producer microservice定义了扇出交换。 每个消费者微服务创建一个队列并尝试将其连接到生产者交换

首先启动生产者时,将创建exchange。启动消费者微服务绑定到生产者交换。但是,如果首先启动消费者微服务,它们将不会绑定,因为还没有要绑定的内容,请给出以下日志:

2020-01-13 22:24:49.640  INFO [,,,] 88649 --- [           main] o.s.a.r.c.CachingConnectionFactory       : Attempting to connect to: [localhost:5672]
2020-01-13 22:24:49.685  INFO [,,,] 88649 --- [           main] o.s.a.r.c.CachingConnectionFactory       : Created new connection: rabbitConnectionFactory#7746ae18:0/SimpleConnection@428ea503 [delegate=amqp://guest@127.0.0.1:5672/, localPort= 62282]
2020-01-13 22:24:49.726 ERROR [,,,] 88649 --- [ 127.0.0.1:5672] o.s.a.r.c.CachingConnectionFactory       : Channel shutdown: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no exchange 'abc-exchange' in vhost '/', class-id=50, method-id=20)
2020-01-13 22:24:50.748 ERROR [,,,] 88649 --- [ 127.0.0.1:5672] o.s.a.r.c.CachingConnectionFactory       : Channel shutdown: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no exchange 'abc-exchange' in vhost '/', class-id=50, method-id=20)
2020-01-13 22:24:52.754 ERROR [,,,] 88649 --- [ 127.0.0.1:5672] o.s.a.r.c.CachingConnectionFactory       : Channel shutdown: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no exchange 'abc-exchange' in vhost '/', class-id=50, method-id=20)
2020-01-13 22:24:56.763 ERROR [,,,] 88649 --- [ 127.0.0.1:5672] o.s.a.r.c.CachingConnectionFactory       : Channel shutdown: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no exchange 'abc-exchange' in vhost '/', class-id=50, method-id=20)
2020-01-13 22:25:01.794 ERROR [,,,] 88649 --- [ 127.0.0.1:5672] o.s.a.r.c.CachingConnectionFactory       : Channel shutdown: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no exchange 'abc-exchange' in vhost '/', class-id=50, method-id=20)
2020-01-13 22:25:01.807  INFO [,,,] 88649 --- [           main] o.s.a.r.l.SimpleMessageListenerContainer : Broker not available; cannot force queue declarations during start: java.io.IOException
2020-01-13 22:25:01.859 DEBUG [,,,] 88649 --- [           main] .b.c.i.c.AppConfig$CustomHttpTraceFilter : Filter 'httpTraceFilter' configured for use
2020-01-13 22:24:49.640信息[,,]88649---[main]o.s.a.r.c.CachingConnectionFactory:正在尝试连接到:[localhost:5672]
2020-01-13 22:24:49.685信息[,,]88649---[main]o.s.a.r.c.CachingConnectionFactory:已创建新连接:rabbitConnectionFactory/SimpleConnection@428ea503[代表=amqp://guest@127.0.0.1:5672/,localPort=62282]
2020-01-13 22:24:49.726错误[,,]88649---[127.0.0.1:5672]o.s.a.r.c.连接工厂:通道关闭:通道错误;协议方法:#方法(回复代码=404,回复文本=未找到-vhost'/'中没有交换“abc交换”,类id=50,方法id=20)
2020-01-13 22:24:50.748错误[,,]88649---[127.0.0.1:5672]o.s.a.r.c.连接工厂:通道关闭:通道错误;协议方法:#方法(回复代码=404,回复文本=未找到-vhost'/'中没有交换“abc交换”,类id=50,方法id=20)
2020-01-13 22:24:52.754错误[,,]88649---[127.0.0.1:5672]o.s.a.r.c.CachingConnectionFactory:通道关闭:通道错误;协议方法:#方法(回复代码=404,回复文本=未找到-vhost'/'中没有交换“abc交换”,类id=50,方法id=20)
2020-01-13 22:24:56.763错误[,,]88649---[127.0.0.1:5672]o.s.a.r.c.连接工厂:通道关闭:通道错误;协议方法:#方法(回复代码=404,回复文本=未找到-vhost'/'中没有交换“abc交换”,类id=50,方法id=20)
2020-01-13 22:25:01.794错误[,,]88649---[127.0.0.1:5672]o.s.a.r.c.CachingConnectionFactory:通道关闭:通道错误;协议方法:#方法(回复代码=404,回复文本=未找到-vhost'/'中没有交换“abc交换”,类id=50,方法id=20)
2020-01-13 22:25:01.807信息[,]88649---[main]o.s.a.r.l.SimpleMessageListenerContainer:经纪人不可用;无法在启动期间强制队列声明:java.io.IOException
2020-01-13 22:25:01.859调试[,,]88649---[main].b.c.i.c.AppConfig$CustomHttpTraceFilter:配置为使用的筛选器“httpTraceFilter”
我如何配置消费者微服务(或生产者)以尝试将队列绑定到生产者exchange,即使它们是在exchange存在之前启动的


另一种方法是生产者根据启动的消费者微服务信息动态创建队列,然后这些信息将侦听给定的队列。然而问题仍然存在,如果队列创建速度不够快,或者消费者在生产者之前创建,那么监听器将抛出异常

我们不能在消费者应用程序中指定绑定bean吗