๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ๋ฐœ์ƒํ™œ/์ด๊ฒƒ์ €๊ฒƒ

ํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ๋‘ ๊ฐœ์˜ MQ Connection ์ •๋ณด ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ

by cocococo331 2022. 3. 5.

MQ Broker๋Š” ๊ฐ™์ด ์‚ฌ์šฉ์ค‘์ธ๋ฐ, vHost๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค.

๊ฒ€์ƒ‰์„ ํ•ด๋ดค๋Š”๋ฐ amqp์—์„œ ์ผ๋‹จ ์ด๋Ÿฐ ์ผ€์ด์Šค ์ง€์›์„ ์•ˆํ•˜๋Š” ๊ฒƒ ๊ฐ™์•˜๊ณ , ์–ด์ผ€ ํ• ์ง€ ๊ณ ๋ฏผํ•˜๊ณ  ์ฐพ์•„๋ณด๋‹ค๊ฐ€

RabbitConfig ์„ค์ • ํŒŒ์ผ ๋งŒ๋“ค์–ด ๋†“์€ ๊ณณ์— ๊ธฐ์กด์—” ๊ตฌ๋ƒฅ rabbitTemplate Autowired ํ•œ๊ฑธ ์‚ฌ์šฉํ–ˆ์œผ๋‚˜,

์›ํ•˜๋Š” ๋‘ connectionFactory์™€ rabbitTemplate๋ฅผ ์ƒˆ๋กœ bean์„ ๊ฐ๊ฐ ๋งŒ๋“ค์–ด์„œ ๊ตฌํ˜„ํ•ด์คฌ๋‹ค.

์•ฝ๊ฐ„ ๋˜‘๋˜‘ํ•˜๊ฒŒ ํ•ด์ฃผ๋Š”๊ฑธ ๋ฉ์ฒญํ•˜๊ฒŒ ๋‹ค์‹œ ๋ฐ”๊ฟ”๋ฒ„๋ฆฐ ๋Š๋‚Œ์ด์ž๋งŒ ์ผ๋‹จ์€ ๊ตฌ๋ถ„์„ ํ•˜๋Š”๊ฒŒ ๋ชฉ์ ์ด์—ˆ์œผ๋‹ˆ..


  • ์„ค์ • ๋ถ€๋ถ„
@Configuration
public class RabbitMqConfig {

    @Resource
    private Environment environment;

    public final static String QUEUE_NAME = "queue.name.name";
    
    //๊ธฐ์กด ์ฝ”๋“œ ์ฃผ์„
//  private RabbitTemplate rabbitTemplate;
//
//	public RabbitMqConfig(RabbitTemplate rabbitTemplate) {
//		this.rabbitTemplate = rabbitTemplate;
//	}

//    @PostConstruct
//    protected void afterPropertiesSet() {
//
//    	rabbitTemplate.setChannelTransacted(false);
//    	rabbitTemplate.setMessageConverter(new Jackson2JsonMessageConverter());
//    }

    @Primary
    @Bean(name = "aConnectionFactroy")
    public ConnectionFactory aConnectionFactroy() {
        CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
        connectionFactory.setUri(environment.getProperty("a.spring.rabbitmq.addresses"));
        connectionFactory.setPort(environment.getProperty("a.spring.rabbitmq.port"));
        connectionFactory.setUsername(environment.getProperty("a.spring.rabbitmq.username"));
        connectionFactory.setPassword(environment.getProperty("a.spring.rabbitmq.password"));
        connectionFactory.setVirtualHost(environment.getProperty("a.spring.rabbitmq.virtualhost"));
        return connectionFactory;
    }

    @Primary
    @Bean(name="aRabbitTemplate")
    public RabbitTemplate aRabbitTemplate(@Qualifier("aConnectionFactroy") ConnectionFactory connectionFactory) {
        RabbitTemplate template = new RabbitTemplate(connectionFactory);
        template.setChannelTransacted(false);
        template.setMessageConverter(new Jackson2JsonMessageConverter());
        return template;
    }


    @Bean(name = "cConnectionFactroy")
    public ConnectionFactory cConnectionFactory() {
        CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
        connectionFactory.setUri(environment.getProperty("c.spring.rabbitmq.addresses"));
        connectionFactory.setPort(environment.getProperty("c.spring.rabbitmq.port"));
        connectionFactory.setUsername(environment.getProperty("c.spring.rabbitmq.username"));
        connectionFactory.setPassword(environment.getProperty("c.spring.rabbitmq.password"));
        connectionFactory.setVirtualHost(environment.getProperty("c.spring.rabbitmq.virtualhost"));

        return connectionFactory;
    }

    @Bean(name="cRabbitTemplate")
    public RabbitTemplate cRabbitTemplate(@Qualifier("cConnectionFactroy") ConnectionFactory connectionFactory) {
        RabbitTemplate template = new RabbitTemplate(connectionFactory);
        template.setChannelTransacted(false);
        template.setMessageConverter(new Jackson2JsonMessageConverter());
        return template;
    }

 

  • ์‹ค์ œ ์‚ฌ์šฉํ•˜๋Š” ๋ถ€๋ถ„
@Service
@Slf4j
@RequiredArgsConstructor
public class CostRecommendService {
	
    @Resource(name="cRabbitTemplate")
    private final RabbitTemplate cRabbitTemplate;

    public void execute(JSONObject param) {

        try {
            cRabbitTemplate.convertAndSend(RabbitMqConfig.QUEUE_NAME, param);
        } catch (Exception e) {
            log.error("error", e);
        } 

    }

	
	
}

๊ธฐ์กด์— ์‚ฌ์šฉํ•˜๋˜ ๋…€์„์„ ๊ทธ๋ƒฅ @Primary๋กœ ์ค˜์„œ ํŠน๋ณ„ํžˆ ๋ช…์‹œ ์•ˆํ•˜๋ฉด aRabbitTemplate ์ฐพ๊ฒŒ ํ•ด๋†จ๋‹ค.
property์—์„œ ๋•ก๊ฒจ์™€์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฑธ๋กœ ๋ฐ”๊พธ๊ณ  ๋‹ค์‹œ ํ™•์ธํ•˜๊ณ  ๋๋‚ด์•ผ์ง€

์ผ๋‹จ ํ…Œ์ŠคํŠธ ํ–ˆ์„ ๋•Œ๋Š” ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ ๊ฐ™๊ธด ํ•œ๋ฐ ๋งž๋Š” ๋ฐฉ๋ฒ•์ธ์ง€๋Š” ์ž˜ ๋ชฐ๊ฒ„๋‹ค
๋‚˜๊ฐ™์€ ๊ฒฝ์šฐ์—” vHost๋งŒ ๋‹ฌ๋ผ์„œ ํ•ด๋‹น ๊ฒฝ์šฐ๋ฅผ ๊ตฌํ˜„ํ–ˆ๋˜๊ฑฐ์˜€๋Š”๋ฐ ์ด๋Ÿฐ ๋ฐฉ์‹์ด๋ฉด vHost, user, host ๋‹ค ๋‹ฌ๋ผ๋„ ๊ฐ€๋Šฅํ•ด๋ณด์ธ๋‹ค.