Таким образом, этот вопрос проистекает из разработки Axon Spring Cloud Extension .
Сначала короткое объяснение, что это за расширение:
Цель расширения Axon Framework - предоставить решение для обнаружения служб, обеспечивающее согласованную маршрутизацию командных сообщений на отдельные узлы в распределенном сценарии. Часть службы обнаружения, как обмен информацией между обнаруженными узлами. Распространяемая информация состоит из набора командных сообщений, которые может обрабатывать любой данный узел.
Теперь это расширение изначально было разработано и протестировано с помощью решения Eureka Discovery Service / Client компании Spring Cloud Netflix. Как описано ранее, обнаруженные узлы должны обмениваться информацией друг с другом.
Первоначальная идея для этой реализации состояла в том, чтобы использовать поле метаданных ServiceInstance
. Метаданные будут обновляться каждый раз, когда информация об обработке команд узла будет меняться. Таким образом, это предоставит возможности обработки команд ServiceInstance'
с другими существующими узлами. Позже мы узнали, что это не было целью с точки зрения библиотеки Spring Cloud Commons, что можно найти в этом выпуске GitHub, который я создал в тот же день.
Однако для Eureka этот подход работал нормально, по крайней мере, для spring-cloud-commons
версии 2.0.1.RELEASE. После обновления в направлении выпуска Hoxton.SR3 мы заметили некоторую проблему с использованием расширения в сочетании с Eureka Spring Cloud Netflix.
До запуска InstanceRegisteredEvent
мы все еще могли обновить метаданные ServiceInstance
. После публикации этого события это было уже невозможно. К сожалению, именно после этого события добавляется информация об обработке команд. Таким образом, мы больше не могли распространять эту информацию через метаданные ServiceInstance
.
Сказав все это, я наконец-то пришел к своим вопросам:
- Как там другой подход к обновлению метаданных
ServiceInstance
? - И, возможно, что еще более важно, все еще ожидается, что действительная операция по корректировке метаданных
ServiceInstance
с модулями, содержащимися в Hoxton.SR3?
Для тех, кто заинтересован, класс, содержащийся в вышеупомянутом расширении, выполняющем обновления метаданных, можно найти здесь .
Наконец, для большей ясности, это это полный набор зависимостей Spring (-Cloud), используемых прямо сейчас:
spring-cloud-commons
-> 2.0.1.RELEASE spring-context
-> 5.1.4. РЕЛИЗ spring-web
(исключая spring-expression
& spring-aop
) -> 5.1.4. РЕЛИЗ spring-boot-starter
-> 2.1.2. РЕЛИЗ spring-boot-configuration-processor
-> 2.1.2. РЕЛИЗ