@Data
@Configuration
public class RabbitMQConfig {
@Value("${app.rabbitmq.activity.queue:}")
private String queueName;
@Value("${app.rabbitmq.activity.exchange:}")
private String exchange;
@Value("${app.rabbitmq.activity.routingKey:}")
private String routingKey;
@Bean
Queue queue() {
return new Queue(queueName, false);
}
@Bean
DirectExchange exchange() {
return new DirectExchange(exchange);
}
@Bean
Binding binding(Queue queue, DirectExchange exchange) {
return BindingBuilder.bind(queue).to(exchange).with(routingKey);
}
@Bean
public MessageConverter jsonMessageConverter() {
return new Jackson2JsonMessageConverter();
}
@Bean
public AmqpTemplate rabbitTemplate(ConnectionFactory connectionFactory) {
final RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
rabbitTemplate.setMessageConverter(jsonMessageConverter());
return rabbitTemplate;
}
//监听使用
@RabbitListener(queues = {"${app.rabbitmq.activity.queue}"})
public void receiveMessage(String message) {
try {
ActivityInput input = JsonHelper.jsonToObj(message, ActivityInput.class);
activityService.create(input);
} catch (IOException e) {
e.printStackTrace();
}
}
//rabbitmq配置
# RabbitMQ
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=secretpassword
app.rabbitmq.activity.exchange=gitfog-dev
app.rabbitmq.activity.queue=gitfog-activities
app.rabbitmq.activity.routingKey=activities