Desidero utilizzare Camel per ricevere un messaggio da ActiveMQ e quindi, in base al contenuto del messaggio (un protobuf), inviare uno o più messaggi a Twitter. Ho scritto un bean chiamato da una route e che utilizza l'injection per inviare più messaggi a un endpoint "direct: xyz".Apache Camel Endpoint iniezione per dirigere il percorso "Nessun utente disponibile sull'endpoint"
Tuttavia, Camel si lamenta in fase di esecuzione che:
2012-11-16 09:56:33,376 | WARN | ication.twitter] | DirectProducer | 160 - org.apache.camel.camel-core - 2.10.2 | No consumers available on endpoint: Endpoint[direct://twitter] to process: Exchange[Message: hello world]
Se invece iniettare direttamente al punto finale Twitter all'interno del chicco, funziona benissimo. Tuttavia, per facilitare i test, semplificare la configurazione, ecc., Vorrei mantenere separata la configurazione attuale di Twitter, quindi voglio inviare a un percorso separato.
La configurazione contesto cammello si presenta come: -
Il fagiolo si presenta come: -
public class NotificationTweeter {
@EndpointInject(uri = "direct:twitter")
private ProducerTemplate producerTemplate;
public void createTweets(NotificationMsg notification) {
String tweet = notification.getMessageDetail().getTitle();
try {
// only send tweets where the notification message contains the Twitter mechanism
for (MechanismMsg mechanism : notification.getMechanismList()) {
if (mechanism.getType() == MechanismTypeEnum.TWITTER) {
// Cycle round the recipients
for (RecipientMsg recipient : mechanism.getRecipientList()) {
tweet = "@" + recipient.getIdentifier() + " " + tweet;
producerTemplate.sendBody(tweet);
}
// TODO exceptions if no recipients found, etc
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
Ho avuto questo problema in altri percorsi (non è certamente legato alla funzione di Twitter) ma hanno appena lavorato intorno ad esso. Questa volta, tuttavia, mi piacerebbe davvero capire qual è il problema! Qualsiasi aiuto ricevuto con gratitudine, grazie.
Grazie. Ho aggiunto startupOrder = "100" al percorso diretto e "200" a quello che gli ho inviato e ha funzionato perfettamente. –
Stavo impostando il modello del produttore e iniziando il contesto del cammello prima di configurare il percorso. L'ordine è configurato come percorso - avvio contesto cammello - Configurazione modello produttore –