0
我有一个作为消息中间件的兔子春天休息的应用程序。当应用程序接受传入的休息请求时,它会回复用户,同时它会异步执行一些额外的处理,生成一条新消息并将其放在兔子身上。从那里,一些消费者阅读消息并将其传递给外部系统。现在,有一种情况是兔子服务器本身可能关闭。 来处理这种失败的,我有一个阻塞队列(当然具有可调整大小)Spring引导和rabbitmq集成,如何恢复组件失败?
@Bean
public TaskExecutor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(5);
executor.setMaxPoolSize(10);
executor.setQueueCapacity(25);
return executor;
}
队列将能够处理一些邮件,直到兔子联机。但是,如果它太长并且请求超过队列大小,那么它将会失败。现在的问题是,有没有一种方法可以改进并提高效率?什么是行业最佳实践?这种情况下是否有任何模式?
也许春天云端Histrix断路器。 https://martinfowler.com/bliki/CircuitBreaker.html或https://spring.io/guides/gs/circuit-breaker/ –
因此,将消费者和生产者包装在Histrix断路器中可能是有道理的。兔子连接工厂本身呢?如果无法建立连接,则一遍又一遍重试并浪费网络和服务器资源是没有意义的。 – Imran
Spring云流绑定器http://cloud.spring.io/spring-cloud-static/spring-cloud.html#_spring_cloud_stream引入了持久发布 - 订阅语义的概念。默认情况下,RabbitMQ联编程序使用Spring Boot的ConnectionFactory,因此它支持RabbitMQ的所有Spring Boot配置选项。但是,根据我的愚见,如果您是Spring云新手,请首先关注此优秀课程:https://www.udemy.com/microservices-with-spring-cloud/learn/v4/overview –