Обмен сообщениями Apache Camel не ждет ответа - PullRequest
0 голосов
/ 26 июня 2018

У меня следующий код для публикации сообщения в activeMQ и чтения ответа через exchange.Но код, кажется, возвращается мгновенно и не ждет ответа.Не могли бы вы указать, что не так со следующим кодом 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
}

Ответы [ 3 ]

0 голосов
/ 26 июня 2018

Используйте метод request для производителя, как для InOut

0 голосов
/ 28 июня 2018

У меня работает следующий код:

  def sendAndReceiveExtractionDetails(request:String, header: String) : String = {
    camel.createProducerTemplate()
      .sendBody("activemq:queue:extractor-jobs?requestTimeout=1400000", ExchangePattern.InOut, request).toString
  }
0 голосов
/ 26 июня 2018

Кажется, игнорируется ExchangePattern, который вы установили.Вы пытались установить его на свой JMS URI как activemq:queue:...&exchangePattern=InOut?

Я не уверен, нужно ли вам также определять заголовок JMSReplyTo в сообщении или это делается автоматически, когда exchangePattern имеет значение InOut.

...