PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Convertisseur de type d'identifiant agrégé Axon

Honnêtement, vous êtes allé assez loin sur la question ici @Zon. Je ne sais pas si je peux vous aider suffisamment, mais je vais quand même essayer.

Le point de recherche 1 est évidemment la solution la plus pragmatique pour faire fonctionner les choses dès maintenant. Si vous allez remarquer "l'inefficacité" de String par rapport à UUID est quelque chose que j'aurais du mal à faire. Donc, si c'est un non non absolu, l'enquête doit se poursuivre. Sinon, le travail est bien sûr fait.

En ce qui concerne les points de recherche 2 et 3, je pense que vous rencontrez un problème avec le dialecte utilisé pour PostgreSQL, bien que je ne sois pas certain à 100% ici. En particulier, PostgreSQL brandit quelques types "géniaux", mais ceux-ci ne fonctionnent pas toujours automatiquement dans tous les scénarios. Je base mes "conjectures" ici sur le fait de forcer PostgreSQL à utiliser BYTEA au lieu de OID au cas où vous voudriez supprimer TOAST de Postgres aptitude. Cela devient particulièrement pratique si vous choisissez d'utiliser Postgres pour votre magasin d'événements et que vous souhaitez pouvoir voir le contenu des événements. Ce billet de blog précise par exemple comment gérer cela. Plus important encore, ce blog post montre comment vous pouvez par exemple ajuster le dialecte utilisé. Peut-être que cela pourrait vous servir dans les solutions 2 et 3 ?

L'option 4 devrait dans ce cas être la solution la plus logique à adopter. Mais je déduis de votre réponse que vous ne l'avez pas fait fonctionner pour le moment. Lors de la combinaison d'Axon avec Spring, le SpringAxonAutoConfigurer (dont vous faites référence au registerAggregateBeanDefinitions méthode de je crois) vérifiera automatiquement les beans configurables sur votre Aggregate. Il le fait en fonction des champs définis dans le @Aggregate (c'est-à-dire l'annotation du stéréotype Axon's Spring). Plus précisément, vous pouvez utiliser le repository champ dans le @Aggregate pour définir le nom du bean du référentiel que vous souhaitez utiliser.

Vous devriez donc simplement pouvoir fournir un GenericJpaRepository bean avec le identifierConverter souhaité . Le nom de ce bean peut ensuite être spécifié dans le @Aggregate annotation sur votre MyAggregate , afin que la configuration automatique d'Axon puisse le récupérer correctement. J'espère que cela vous aidera !