【问题标题】:Apache Camel message exchange does not wait for the responseApache Camel 消息交换不等待响应
【发布时间】:2018-06-28 13:01:50
【问题描述】:

我有以下代码用于将消息发布到 activeMQ 并通过交换读取响应。但是代码似乎会立即返回,而不是等待响应。您能否指出以下 Scala 代码有什么问题。

def sendAndReceiveExtractionDetails(request:String, header: String) : String = {
    val exchange: DefaultExchange = new DefaultExchange(camel, ExchangePattern.InOut)
    exchange.getIn.setBody(request)
    exchange.getIn.setHeader("meshId", header)
    producer.send("activemq:queue:extractor-jobs?requestTimeout=1400000", exchange)
    val out: apache.camel.Message = exchange.getOut()
    out.getBody().toString
}

【问题讨论】:

    标签: apache-camel activemq


    【解决方案1】:

    它似乎忽略了您设置的ExchangePattern。您是否尝试在您的 JMS URI 上将其设置为 activemq:queue:...&exchangePattern=InOut

    我不确定您是否还需要在消息上定义 JMSReplyTo 标头,或者这是否在 exchangePattern 为 InOut 时自动完成。

    【讨论】:

      【解决方案2】:

      在生产者上使用 request 方法,因为它适用于 InOut

      【讨论】:

        【解决方案3】:

        以下代码对我有用:

          def sendAndReceiveExtractionDetails(request:String, header: String) : String = {
            camel.createProducerTemplate()
              .sendBody("activemq:queue:extractor-jobs?requestTimeout=1400000", ExchangePattern.InOut, request).toString
          }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-02-02
          • 2020-08-28
          • 1970-01-01
          • 2021-10-13
          • 1970-01-01
          • 2018-03-19
          • 1970-01-01
          • 2020-09-01
          相关资源
          最近更新 更多