Я пытаюсь создать простое приложение, которое будет прослушивать одну очередь от Артемиды, а затем обрабатывать сообщения и после этого создавать новое сообщение во второй очереди.
Я создал в методе Main Camel context и добавил маршрутизацию (он пересылает сообщения в бин).И чтобы проверить эту маршрутизацию и то, что этот компонент работает правильно, я отправляю несколько сообщений в эту очередь - сразу после запуска контекста в главном потоке
public static void main(String args[]) throws Exception {
CamelContext context = new DefaultCamelContext();
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616", "admin", "admin");
context.addComponent("cmp/q2", JmsComponent.jmsComponentAutoAcknowledge(connectionFactory));
context.addRoutes(new RouteBuilder() {
public void configure() {
from("cmp/q2:cmp/q2").bean(DataRequestor.class, "doSmth(${body}, ${headers})");
}
});
ProducerTemplate template = context.createProducerTemplate();
context.start();
for (int i = 0; i < 2; i++) {
HashMap<String, Object> headers = new HashMap<String, Object>();
headers.put("header1", "some header info");
template.sendBodyAndHeaders("cmp/q2:cmp/q2", "Test Message: " + i, headers);
}
context.stop();
}
И в этом случае приложение работает нормально, но останавливается, когда методОсновное завершено - оно обрабатывает только те сообщения, которые были созданы им самостоятельно.Теперь, после того, как у меня есть тестовый компонент, который используется в маршрутизации, я хочу изменить приложение таким образом, чтобы оно запускалось и оставалось активным (поддерживая контекст camle и подпрограмму активными) - чтобы я мог создавать массажи вручную в веб-интерфейсе (активная консоль управления mq).).
Но я действительно не знаю как.Я пробовал бесконечный цикл с Thread.sleep (5000);Я попытался запустить еще один поток (также с бесконечным циклом) в основном методе.Но это не сработало. (Самым подозрительным для меня в случае с бесконечным циклом является то, что приложение работает, но когда я создаю сообщение в веб-интерфейсе, оно просто исчезает - и в системе не остается никаких следов того, что он был обработан моим компонентомв маршрутизации предположим, что он должен обрабатываться моим компонентом или просто оставаться в очереди без изменений, но он просто исчезает).
Я теперь, когда мой вопрос является пустым, но я уже потратил 3 дня, чтобы найтирешение, поэтому любые советы или ссылки на учебники или некоторую ценную информацию приветствуются.
PS: У меня есть одно болезненное ограничение - Spring Framework не допускается.