Запрос / ответ с отдыхом - PullRequest
       13

Запрос / ответ с отдыхом

0 голосов
/ 11 февраля 2019

Я не могу реализовать шаблон запроса / ответа, используя протокол отдыха с утешением.Я правильно получаю запрос и вижу некоторые заголовки, такие как «solace-correlation-id» и «solace-message-id».Я ожидаю, что вернусь http-ответ с телом в качестве ответа на сообщение, но я всегда получаю в своем приложении:

org.apache.camel.ExchangeTimedOutException: The OUT message was not received within: 20000 millis due reply message with correlationID: xxxxx-1549904557890-0-26 not received on destination: #P2P/QTMP/v:cfdce68771f5/c9c4ba4a-a427-438a-9b7a-1f069608d13a.

К сожалению, документация по утешению охватывает только шаблон pub / sub для отдыха, но не запрос/ ответить один.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Скорее всего, в вашем ответном сообщении отсутствует идентификатор сообщения или идентификатор связи.

https://docs.solace.com/RESTMessagingPrtl/Solace-REST-Message-Encoding.htm#2.2.6.1

When the Solace message broker receives a possible reply message routed to the HTTP client, it verifies that the reply message's message ID or correlation ID match those of the request message. 
Specifically,

 - the reply's message ID must match the request's message ID the
 - reply's correlation ID must match the request's message ID, or the
 - reply's correlation ID must match the request's correlation ID.

If any of those matches occur, the Solace message broker sends the reply message as an HTTP response to the HTTP client. 
HTTP requires that there be exactly one HTTP response for each HTTP request, so each matching message ID or correlation ID can be used only in a single request-reply message exchange pattern. 
If the reply message does not have a matching message ID or correlation ID as above, or if the reply message's matching message ID or correlation ID has already been consumed by an earlier reply message, the reply message is discarded.
0 голосов
/ 22 февраля 2019

Здесь может происходить несколько разных вещей.

Сначала попробуйте добавить компонент журнала между конечными точками "from" и "to" и снова после конечной точки "to", так как это покажет вам заголовки ответа, например, с использованием синтаксиса Java DSL:

from("{{fromSource}}" )
     .to("log:all?level=INFO&showAll=true&multiline=true")
     .to("{{toDest}}" )
     .to("log:all?level=INFO&showAll=true&multiline=true")
   ;

Я подозреваю, что идентификатор корреляции не передается обратно.В моем примере у меня есть служба NodeJS, поэтому я установил следующий заголовок ответа:

res.setHeader('solace-correlation-id', req.get('solace-correlation-id'));

С помощью дополнительной регистрации вы сможете увидеть, что происходит не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...