Я не совсем уверен, почему это не работает, мне кажется, это нормально.В качестве теста вы можете попробовать разделить конечную точку и посмотреть, работает ли она?
Endpoint endpoint = context.getEndpoint("direct:route1");
producer.setDefaultEndpoint(endpoint);
producer.requestBodyAndHeader(body,headers);
Еще одна вещь, которую вы можете проверить, это попробовать «seda» вместо «direct», поскольку «прямые» конечные точки могутвозникают проблемы, если вы загружаете свои компоненты в смешном порядке (т. е. если потребитель еще не инициализирован, «прямой» конечной точки может не существовать)