У меня есть простое приложение (Java), которое слушает тему Кафки, используя Camel.Это название темы следует шаблону, подобному следующему:
foo.bar.lol
foo.bar.wat
Я знаю, что эти темы всегда начинаются с foo.bar.
, но может быть бесконечно много элементов 3-го уровня.
Это не такМожно добавить несколько маршрутов, один для foo.bar.lol
и один для foo.bar.wat
, потому что их бесконечно много.Также невозможно изменить способ, которым эти названия тем генерируются и передаются мне.Вот и все.
Соответствующий материал:
camel.properties
...
kafka.brokers=x.x.x.x:1234,y.y.y.y:2345,z.z.z.z:3456
kafka.incoming-topic=foo.bar.*
...
Примечание: я также пробовалkafka.incoming-topic=foo.bar.>
, который, по-видимому, является рекурсивным селектором подстановочных знаков.Без разницы.
Соответствующий элемент из маршрута
from("kafka:{{kafka.incoming-topic}}?brokers={{kafka.brokers}}")
Полный список зависимостей из pom.xml - без Spring или чего-либо подобного
<dependencies>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
<version>2.22.0</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-kafka</artifactId>
<version>2.22.0</version>
</dependency>
</dependencies>
Я знаю, что все остальное в порядке, потому что, если я явно поменяю kafka.incoming-topic
на foo.bar.lol
, я получу сообщения просто отлично.
Разве это невозможно?Я делаю это неправильно?