package com.rabbitmq.test.withspring;
/**
* Created by wuhuachuan on 17/1/12.
*/
import com.rabbitmq.test.entity.StudentInSend;
import com.rabbitmq.test.entity1.StudentInReceive;
import com.rabbitmq.test.entity1.Teacher;
import lombok.Data;
import org.springframework.amqp.rabbit.annotation.EnableRabbit;
import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.support.converter.ClassMapper;
import org.springframework.amqp.support.converter.DefaultClassMapper;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.Map;
/**
* Created by wuhuachuan on 16/3/28.
*/
@EnableRabbit
@Configuration
@Data
public class RabbitMQConfig {
@Bean(name = "classMapper")
public ClassMapper createClassMapper(){
DefaultClassMapper classMapper = new DefaultClassMapper();
classMapper.setDefaultType(StudentInSend.class);
Map<String,Class<?>> map = new HashMap<String, Class<?>>();
map.put("Student",StudentInSend.class);
map.put("Teacher",Teacher.class);
classMapper.setIdClassMapping(map);
return classMapper;
}
@Bean(name = "studentMessageConverter_send")
public MessageConverter StudentMessageConverter_send(@Qualifier(value = "classMapper") ClassMapper classMapper) {
Jackson2JsonMessageConverter messageConverter = new Jackson2JsonMessageConverter();
messageConverter.setClassMapper(classMapper);
return messageConverter;
}
@Bean(name = "studentMessageConverter_receive")
public MessageConverter StudentMessageConverter_receive() {
DefaultClassMapper classMapper = new DefaultClassMapper();
classMapper.setDefaultType(StudentInReceive.class);
Map<String,Class<?>> map = new HashMap<String, Class<?>>();
map.put("Student",StudentInReceive.class);
map.put("Teacher",Teacher.class);
classMapper.setIdClassMapping(map);
Jackson2JsonMessageConverter messageConverter = new Jackson2JsonMessageConverter();
messageConverter.setClassMapper(classMapper);
return messageConverter;
}
@Bean(name = "simpleRabbitListenerContainerFactory")
SimpleRabbitListenerContainerFactory createSimpleRabbitListenerContainerFactory(
@Qualifier(value = "studentMessageConverter_receive") MessageConverter studentMessageConverter,
ConnectionFactory connectionFactory) {
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setMessageConverter(studentMessageConverter);
return factory;
}
@Bean(name = "rabbitTemplate")
RabbitTemplate rabbitTemplate(
@Qualifier(value = "studentMessageConverter_send") MessageConverter studentMessageConverter,
ConnectionFactory connectionFactory) {
RabbitTemplate template = new RabbitTemplate(connectionFactory);
template.setMessageConverter(studentMessageConverter);
return template;
}
}