У меня есть следующий сценарий:
Будет система тестирования на языке Java, состоящая из нескольких «сервисов», которые взаимодействуют, передавая сообщения друг другу.Реализация сервиса предназначена для того, чтобы быть универсальной, т. Е. В ней не содержится особой «бизнес-логики».Для целей испытательного стенда важно иметь возможность создавать различные наборы служб, настроенных извне (если это возможно).
Сами службы не знают о существовании какой-либо другой службы.Каждый сервис просто подписывается на темы, по которым он ожидает получать информацию, и публикует по темам, где он отправляет информацию любым ожидающим подписчикам.При тщательной настройке можно будет смоделировать график потока данных.
План состоит в том, чтобы настроить конкретный экземпляр службы, предоставив информацию о конфигурации, которая описывает информацию, необходимую для настройки подписчиков (читателей) и издателей (писателей).).Информация о конфигурации может включать другие свойства, не относящиеся к публикации / подписке.
Ниже приведен возможный пример:
Примечание : XML был выбран для примера просто потому, что это легкодостаточно для чтения и допускает структурированные данные.
<service>
<name>Service A</name>
<service-id>service ID</service-id>
<publish>
<per-second>5</per-second>
<topic>
<name>Topic 1</name>
<class>org.xyz.Topic1</class>
<!-- override 5/sec rate -->
<per-second>10</per-second>
</topic>
<topic>
<name>Topic 2</name>
<class>org.xyz.Topic2</class>
</topic>
</publish>
<subscribe>
<topic>
<name>Topic 3</name>
<class>org.xyz.Topic3</class>
</topic>
</subscribe>
</service>
<service>
<name>Service B</name>
<service-id>service ID</service-id>
<publish>
<per-second>30</per-second>
<topic>
<name>Topic 3</name>
<class>org.xyz.Topic3</class>
</topic>
</publish>
<subscribe>
<topic>
<name>Topic 2</name>
<class>org.xyz.Topic2</class>
</topic>
</subscribe>
</service>
...
Я хотел бы использовать среду Spring, чтобы помочь с настройкой этих служб. Примечание : Я очень новичок в Spring и в настоящее время читаю Spring in Action (и другие источники), чтобы обучить себя.
Что я хотел бы знать, это:Как я мог «внедрить» информацию о конфигурации в какой-либо контроллер или фабрику, которая затем использовала бы ее для создания набора служб и предоставления им необходимой информации для создания устройств чтения и записи, которые они будут использовать для получения и отправки сообщений?
Из того, что я до сих пор читал, Spring выглядит довольно мощным WRT для внедрения зависимостей и «связывания бинов», но я не знаю достаточно о том, что можно (и нельзя) делать, и как это сделать.сделайте это.
Я не неравнодушен к тому, настроен ли Spring на Java или XML.Я просто использовал XML, потому что его легко собрать, он позволяет структурировать данные и, кажется, используется везде.Если имеет больше смысла указывать конфигурацию другим способом, просто дайте мне знать.
Как данная служба будет обрабатывать событие (то есть получать конкретное сообщение), чтобы возможно отправить сообщение «ответ», илипредпринять какое-то другое действие, это тема, выходящая за рамки этого вопроса.Я исследую, как это можно сделать - в основном на основе обработки правил.Если у кого-то есть предложения, я с удовольствием их рассмотрю.