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 ๋ค ๋ฌ๋ผ๋ ๊ฐ๋ฅํด๋ณด์ธ๋ค.
'๊ฐ๋ฐ์ํ > ์ด๊ฒ์ ๊ฒ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
H2 ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ค์น ๋ฐ ์ด๊ธฐ ์ค์ ๋ฐฉ๋ฒ (0) | 2024.04.15 |
---|---|
SSE ์ ์ฉ (1) - SSE๋ฅผ ์ ์ฉํด๋ณด์ ๊ฐ๋ (0) | 2024.04.12 |
ํ๋ก์ ํธ Tree ๊ตฌ์กฐ ์ถ๊ฐ (0) | 2023.10.15 |
221209 @JsonProperty (1) | 2022.12.09 |
OOM์ ์์ธ๊ณผ ์์ฃผ ๊ฐ๋จํ๊ฒ OOM ๋ฐ์ ์ํค๊ธฐ (0) | 2022.04.16 |