第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

Apache Camel 自定義組件消費者不調(diào)用其他處理器

Apache Camel 自定義組件消費者不調(diào)用其他處理器

慕工程0101907 2022-07-06 19:05:38
我在Apache Camel中編寫了一個自定義組件。駱駝成功地創(chuàng)建了它的消費者并使用我的 URI,但沒有調(diào)用處理器。這是我的消費者代碼片段(在 Kotlin 中):class SoroushBotConsumer (private val endpoint: MyEndpoint, processor: Processor) : DefaultConsumer(endpoint, processor) {    val objectMapper:ObjectMapper = ObjectMapper();    init {        startListening()    }    private fun startListening() {        val client = ClientBuilder.newBuilder().register(SseFeature::class.java).build()        val target = client.target("MY_URL"))        while(true){            var e: EventInput?  target.request().get(EventInput::class.java)!!            val inboundEvent = e.read()            val exchange = endpoint.createExchange()            exchange.getIn().body = objectMapper.readValue(inboundEvent.rawData,MessageModel::class.java)            try {                processor.process(exchange)            } catch (e: Exception) {                if (exchange.exception != null) {                exceptionHandler.handleException("Error processing exchange",exchange, exchange.exception)            }        }    }}在消費者中一切正常,但沒有處理器被執(zhí)行。這是我創(chuàng)建路線的方法!var context = DefaultCamelContext()context.addRoutes(object : RouteBuilder() {    override fun configure() {        from("myapp://getMessage/).process{            println(it.getIn())        }.to("myapp://sendMessage/")    }})context.start();Thread.sleep(100000);context.stop();它既不調(diào)用流程也不創(chuàng)建我的生產(chǎn)者。(它甚至不調(diào)用MyEndpoint::createProducer())當我用另一個端點替換我的from語句時file,一切正常。更新:ScheduledPollConsumer當我從實現(xiàn)方法擴展我的消費者時pull,一切都很好。
查看完整描述

2 回答

?
慕田峪7331174

TA貢獻1828條經(jīng)驗 獲得超13個贊

在 doStart 方法中設(shè)置無限循環(huán)并不是一個好主意,您將在其中劫持當前線程,然后該線程將永遠不會終止。相反,您應該設(shè)置一個運行此作業(yè)的后臺線程,并且您可以從 doStart 設(shè)置此線程并讓它運行。換句話說,組件“接收”消息的方式是 100% 特定于組件的,因為每個組件都有自己的方式。然后在 doStop 方法中,您有邏輯來停止該后臺線程并清理您的任何資源。



查看完整回答
反對 回復 2022-07-06
?
三國紛爭

TA貢獻1804條經(jīng)驗 獲得超7個贊

是的,因為我們必須完成consumer的構(gòu)造函數(shù),并將接收消息的邏輯寫在doStart()


class SoroushBotConsumer (private val endpoint: MyEndpoint, processor: Processor) : DefaultConsumer(endpoint, processor) {

    val objectMapper:ObjectMapper = ObjectMapper();

    override fun doStart() {

        val client = ClientBuilder.newBuilder().register(SseFeature::class.java).build()

        val target = client.target("MY_URL"))

        while(true){

            var e: EventInput?  target.request().get(EventInput::class.java)!!


            val inboundEvent = e.read()

            val exchange = endpoint.createExchange()

            exchange.getIn().body = objectMapper.readValue(inboundEvent.rawData,MessageModel::class.java)

            try {

                processor.process(exchange)

            } catch (e: Exception) {

                if (exchange.exception != null) {

                    exceptionHandler.handleException("Error processing exchange",exchange, exchange.exception)

                }

            }

        }

    }

}


查看完整回答
反對 回復 2022-07-06
  • 2 回答
  • 0 關(guān)注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號