SpringBoot集成RabbitMq多rabbitTemplate管理,多SimpleRabbitListenerContainerFactory管理
使用RabbitMq,发送消息确认,需要使用rabbitTemplate的ConfimCallback方法和ReturnCallback方法,网上大多配置为全局修改,如果需要对单个生产者进行配置,则需要将rabbitTemplate设置为多例,在需要单独配置的生产者使用@PostConstruct注解进行设置rabbitTemplate的ConfimCallback方法和ReturnCallback方法
生产者代码如下:
RabbitConfig:
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;
@Configuration
public class RabbitConfig {
@Bean
//设置为多实例的,每次注入都使用不同的示例
@Scope("prototype")
public RabbitTemplate createRabbitTemplate(ConnectionFactory connectionFactory){
RabbitTemplate rabbitTemplate = new RabbitTemplate();
rabbitTemplate.setConnectionFactory(connectionFactory);
return rabbitTemplate;
}
}
需要消息确认的生产者
import com.alibaba.fastjson.JSON;
import com.nacosdemo.vo.ListVo;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.connection.CorrelationData;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Post