2017-05-19 19 views
0

メッセージを非同期ルートに送信しようとしていますが、動作していません。 は、私はちょうどApache 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

まず、他のプロジェクトにリンクを張らないでください。非常に少数の人々がそれらのリンクを調べます。代わりにrelavantコードと例外/スタックトレースで実際の問題を入れてください。 – pvpkiran

+0

申し訳ありませんが、質問を編集します –

答えて

0
  1. は、次の2つのルートを持っている問題をシミュレートするために、githubの上でPROJETOを作成しました。あなたがseda://async-queueと指定したルートの1つで、他のseda://async-queue?size=100では、一貫性を持たせます。つまり、サイズ属性を最初のルートに追加するか、2番目のルートから削除します。それは桃のように動作します。
  2. 理由は(ラクダコードのバグであればわかりません)、SedaComponent::getOrCreateQueueでサイズ属性も比較しています。したがって、サイズ属性が存在する場合は例外が発生し、一致しない場合は例外が発生します。

希望があれば。

+0

助けてくれてありがとう。今それは動作します! –