Comment faire pour configurer et receiveAndConvert de la charge utile jSON dans le domaine de l'Objet au Printemps de Démarrage et RabbitMQ

Récemment, j'ai eu un vif intérêt sur Microservice de l'Architecture à l'aide de Printemps de Démarrage. Mon œuvre a deux Printemps applications de démarrage;

Demande Un reçoit les demandes à partir d'une API RESTful, convertit et envoie de la charge utile jSON pour un RabbitMQ filea.

Application de Deux, a souscrit à filea, reçoit la charge utile jSON(Objet de Domaine de l'Utilisateur) et est censé activer un service au sein de l'Application de Deux par exemple. envoyer un email à un utilisateur.

N'utilisant pas de XML dans mon Application de Deux configuration, comment puis-je configurer un convertisseur qui convertira la charge utile jSON reçu de RabbitMQ dans un Objet de Domaine de l'Utilisateur.

Ci-dessous sont des extraits de Printemps configurations de Démarrage sur l'Application de Deux

Application.class

@SpringBootApplication
@EnableRabbit
public class ApplicationInitializer implements CommandLineRunner {

    final static String queueName = "user-registration";

    @Autowired
    RabbitTemplate rabbitTemplate;

    @Autowired
    AnnotationConfigApplicationContext context;

    @Bean
    Queue queue() {
        return new Queue(queueName, false);
    }

    @Bean
    TopicExchange topicExchange() {
        return new TopicExchange("user-registrations");
    }

    @Bean
    Binding binding(Queue queue, TopicExchange exchange) {
        return BindingBuilder.bind(queue).to(exchange).with(queueName);
    }

    @Bean
    SimpleMessageListenerContainer container(ConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapter) {
        SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        container.setQueueNames(queueName);
        container.setMessageListener(listenerAdapter);
        return container;
    }

    public static void main(String[] args) {
        SpringApplication.run(ApplicationInitializer.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
        System.out.println("Waiting for messages...");
    }

}

TestService.java

@Component
public class TestService {

    /**
     * This test verifies whether this consumer receives message off the user-registration queue
     */
    @RabbitListener(queues = "user-registration")
    public void testReceiveNewUserNotificationMessage(User user) {
        //do something like, convert payload to domain object user and send email to this user
    }

}

OriginalL'auteur OchiengOlanga | 2015-04-12