Je travaille sur un scénario, où les services de commande et de requête sont des nœuds séparés (démarrage par ressort). configuré à l'RabbitTemplate utiliser Jackson pour la sérialisation JSON:axon 3 service de requête et de commande séparé via rabbitmq: json vs xml
@Bean
RabbitTemplate rabbitTemplate(final ConnectionFactory connectionFactory, Jackson2JsonMessageConverter converter) {
final RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
rabbitTemplate.setMessageConverter(converter);
return rabbitTemplate;
}
@Bean
Jackson2JsonMessageConverter producerJackson2MessageConverter() {
return new Jackson2JsonMessageConverter();
}
Cela fonctionne, quand j'envoie la commande au service de commande, je peux vérifier le format JSON correct dans la file d'attente RabbitMQ.
Mon Aggregate reçoit les commandes et déclenche les événements, ceux-ci sont correctement stockés dans un mysql-eventstore. Ici, les événements sont au format XML.
Maintenant vient la partie difficile. J'utilise axone-springboot d'envoyer à nouveau les événements à une file d'attente de lapin via la propriété:
axon.amqp.exchange: my-event-exchange
Encore une fois, cela fonctionne, je peux vérifier la file d'attente et voir l'événement (en format xml).
Sur la file d'attente-service, je veux recevoir les événements et produire une représentation en mémoire h2 ... J'utilise:
@Bean
public SpringAMQPMessageSource myMessageSource(Serializer serializer, EventHandlingConfiguration ehConfig) {
return new SpringAMQPMessageSource(serializer) {
@RabbitListener(queues = "my-event-queue")
@Override
public void onMessage(Message message, Channel channel) throws Exception {
log.info("receiving event: {}#{}", message, channel);
super.onMessage(message, channel);
}
};
}
@Autowired
public void configure(EventHandlingConfiguration ehConfig, SpringAMQPMessageSource myMessageSource) {
ehConfig.registerSubscribingEventProcessor(
"taskQueryObjectUpdater", c -> myMessageSource);
}
comme indiqué dans la documentation.
Mais, alors que je vois "l'événement reçu" log, je reçois un
2017-06-16 15:17:38.168 WARN 69212 --- [cTaskExecutor-1] o.s.a.s.c.Jackson2JsonMessageConverter : Could not convert incoming message with content-type [null]
avertissement et mon h2-dépôt-service est jamais appelé.
Je crains que le convertisseur json que j'ai configuré pour lapin et la gestion des événements xml dans axon interférer ... ou suis-je sur la mauvaise voie? Comment séparer correctement le service de commande et de requête via lapin, et à quoi sert le nom du programme eventProcessor? J'ai utilisé le nom de haricot du haricot de printemps qui gère le flux d'événements ...
Merci, allard. Je vais y jeter un coup d'oeil. –
@JanGalinski Avez-vous trouvé une solution? J'ai le même problème. Quelle est la configuration du nouveau SimpleMessageListenerContainerFactory? THX –