2017-05-19 9 views
0

Ich versuche, eine Nachricht an eine asynchrone Route zu senden, aber es funktioniert nicht. Ich habe gerade ein projeto auf Github das ProblemApache Camel - SedaEndpoint

@SpringBootApplication 
public class SedaQueueApplication implements CommandLineRunner { 

@Autowired 
@EndpointInject(uri = "direct://direct-queue") 
ProducerTemplate producerTemplate; 

public static void main(String[] args) { 
    SpringApplication.run(SedaQueueApplication.class, args); 
} 

@Override 
public void run(String... strings) throws Exception { 
    producerTemplate.sendBody("Teste Direct - Async"); 
} 

@Component 
class Router extends RouteBuilder { 

    @Override 
    public void configure() throws Exception { 
     from("direct://direct-queue").routeId("toAsync").to("seda://async-queue?size=100"); 

     from("seda://async-queue").routeId("toLog").log("${body}"); 
    } 
} 
+0

Erstens, keine Links zu anderen Projekten. Sehr wenige Leute werden sich diese Links ansehen. Setzen Sie stattdessen das eigentliche Problem mit relavant Code und Ausnahme/Stacktrace. – pvpkiran

+0

Tut mir leid, dass ich die Frage bearbeiten werde –

Antwort

0
  1. Sie zwei Routen haben zu simulieren. In einer der Routen, die Sie angegeben haben seda://async-queue und in anderen seda://async-queue?size=100 machen Sie dies konsistent, d. H. Größe Attribut hinzufügen, um die erste Route oder von der zweiten zu entfernen. Es wird wie ein Pfirsich funktionieren.
  2. Der Grund dafür ist (Nicht sicher, ob es sich um einen Fehler in Camel-Code handelt), In SedaComponent::getOrCreateQueue werden sie auch für das Größenattribut verglichen. Daher erhalten Sie eine Ausnahme, wenn das Größenattribut vorhanden ist und nicht übereinstimmt.

Hoffe, dass hilft.

+0

Danke für Hilfe. Jetzt funktioniert es ! –