package com.cim.idm.config;


import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;

/*
*
 * @Description:
 * @param
 * @Return:
 * @Author: Zgg
 * @Date: 2024/4/13 10:43
*/



@Slf4j
@Configuration
public class RabbitMqConfigNew {

	@Autowired
	private CachingConnectionFactory connectionFactory;

	/**
	 * 申明接收交换机
	 * @Author 10946091
	 * @Date 14:32 2024/5/23
	 * @Param []
	 * @return org.springframework.amqp.core.Exchange
	 **/
//	@Bean(RabbitMqConstants.EXCHANGE_EQtoMES)
//	public Exchange exchange1(){
//		//durable(true) 持久化，mq重启之后交换机还在
//		return ExchangeBuilder.topicExchange(RabbitMqConstants.EXCHANGE_EQtoMES).durable(true).autoDelete().build();
//	}
//
//	@Bean(RabbitMqConstants.EXCHANGE_MEStoEQ)
//	public Exchange exchange2(){
//		//durable(true) 持久化，mq重启之后交换机还在
//		return ExchangeBuilder.topicExchange(RabbitMqConstants.EXCHANGE_MEStoEQ).durable(true).autoDelete().build();
//	}
//
///**
//	 *  声明队列
//	 *  new Queue(QUEUE_EMAIL,true,false,false)
//	 *  durable="true" 持久化 rabbitmq重启的时候不需要创建新的队列
//	 *  auto-delete 表示消息队列没有在使用时将被自动删除 默认是false
//	 *  exclusive  表示该消息队列是否只在当前connection生效,默认是false
// *  */
//
//	@Bean(RabbitMqConstants.EQtoMES_QUEUE)
//	public Queue esQueue() {
//		return new Queue(RabbitMqConstants.EQtoMES_QUEUE,true, false, true);
//	}
//
//	@Bean(RabbitMqConstants.EQtoMES_REPLY_QUEUE)
//	public Queue esQueue2() {
//		return new Queue(RabbitMqConstants.EQtoMES_REPLY_QUEUE,true, false, true);
//	}
//
///*
//*
//	 *  声明队列
//*/
//
//
//	@Bean(RabbitMqConstants.MEStoEQ_QUEUE)
//	public Queue gitalkQueue() {
//		return new Queue(RabbitMqConstants.MEStoEQ_QUEUE,true, false, true);
//	}
//
//	@Bean(RabbitMqConstants.MEStoEQ_REPLY_QUEUE)
//	public Queue gitalkQueue2() {
//		return new Queue(RabbitMqConstants.MEStoEQ_REPLY_QUEUE,true, false, true);
//	}
//
///**
//	 *  TEST1_QUEUE队列绑定交换机，指定routingKey*/
//
//
//
//	@Bean
//	public Binding bindingEs(@Qualifier(RabbitMqConstants.EQtoMES_QUEUE) Queue queue,
//							 @Qualifier(RabbitMqConstants.EXCHANGE_EQtoMES) Exchange exchange) {
//		return BindingBuilder.bind(queue).to(exchange).with(RabbitMqConstants.TOPIC_EQtoMES_ROUTINGKEY).noargs();
//	}
//	@Bean
//	public Binding bindingEs2(@Qualifier(RabbitMqConstants.EQtoMES_REPLY_QUEUE) Queue queue,
//							 @Qualifier(RabbitMqConstants.EXCHANGE_EQtoMES) Exchange exchange) {
//		return BindingBuilder.bind(queue).to(exchange).with(RabbitMqConstants.TOPIC_EQtoMES_REPLY_ROUTINGKEY).noargs();
//	}
//
///**
//	 *  TEST2_QUEUE队列绑定交换机，指定routingKey*/
//
//
//	@Bean
//	public Binding bindingGitalk(@Qualifier(RabbitMqConstants.MEStoEQ_QUEUE) Queue queue,
//								 @Qualifier(RabbitMqConstants.EXCHANGE_MEStoEQ) Exchange exchange) {
//		return BindingBuilder.bind(queue).to(exchange).with(RabbitMqConstants.TOPIC_MEStoEQ_ROUTINGKEY).noargs();
//	}
//
//	@Bean
//	public Binding bindingGitalk2(@Qualifier(RabbitMqConstants.MEStoEQ_REPLY_QUEUE) Queue queue,
//								 @Qualifier(RabbitMqConstants.EXCHANGE_MEStoEQ) Exchange exchange) {
//		return BindingBuilder.bind(queue).to(exchange).with(RabbitMqConstants.TOPIC_MEStoEQ_REPLY_ROUTINGKEY).noargs();
//	}
//
//
//
///**
//	 * 如果需要在生产者需要消息发送后的回调，
//	 * 需要对rabbitTemplate设置ConfirmCallback对象，
//	 * 由于不同的生产者需要对应不同的ConfirmCallback，
//	 * 如果rabbitTemplate设置为单例bean，
//	 * 则所有的rabbitTemplate实际的ConfirmCallback为最后一次申明的ConfirmCallback。
//	 * @return*/
//
//
//
//	@Bean
//	@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
//	public RabbitTemplate rabbitTemplate() {
//		RabbitTemplate template = new RabbitTemplate(connectionFactory);
//		return template;
//	}

}
