亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 apache camel 中正確使用直接組件?

如何在 apache camel 中正確使用直接組件?

慕勒3428872 2023-06-04 17:49:56
我有一條簡單的路線:direct:in -> step1 -> step2 -> stepN -> direct:out我想像函數調用一樣使用它:consumer = camelContext.createConsumerTemplate() producer = camelContext.createProducerTemplate() producer.sendBody("direct:int", body) consumer.receiveBody("direct:out", TYPE)問題是當我調用producer.sendBody(...)線程時被阻塞。另外,由于線程被阻塞,我無法使用消費者,所以結果我得到了一個沒有消費者的異常direct:out。我可以為消費者使用另一個線程,但我的目標是使用駱駝路線作為具有輸入和輸出的函數。另外,我可以使用producer.asyncSendBody(...),但這是正確的方法嗎?這種方法允許我使用 來消費消息consumer,但我認為應該有另一種方法。
查看完整描述

1 回答

?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

在不知道步驟 1、2、N 正在做什么的情況下,不可能明確地說出發生了什么,但假設它們沒有阻塞,那么您所看到的是因為在某些東西消耗該交換之前無法完成direct:out。因為那個電話是在sendBody()它無法完成之后發出的——正如你所看到的。

您有三個選擇(也許更多):

  1. asyncSendBody()按照您的說明使用。

  2. 將 Exchange從哪個隊列更改direct:outseda:out允許發送完成并繼續接收。

  3. 刪除"direct:out"端點并更改為sendBody(Endpoint, Object)sendBody(Endpoint, ExchangePattern, Object)最終結果主體返回給調用者。

選項 3 似乎是您想要做的,而且更簡單。


查看完整回答
反對 回復 2023-06-04
  • 1 回答
  • 0 關注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號