Próbuję zaimplementować jakieś proxy jako część mojego przepływu danych, chcę otrzymać żądanie http na moją bramkę przychodzącą i przekazać ją przez bramkę wychodzącą . Chcę zachować wszystkie parametry ciągu zapytania. Moja konfiguracja bramki jest:Wiosenna integracja, w jaki sposób mogę przekazywać przychodzące żądania http za pośrednictwem bramy poczty wychodzącej?
<int:channel id="searchRequestChannel" />
<int:channel id="searchReplyChannel" />
<int-http:inbound-gateway id="searchRequestInboundGateway"
supported-methods="GET"
request-channel="searchRequestChannel"
reply-channel="searchReplyChannel"
path="/services/normalization"
reply-timeout="50000"
/>
<int-http:outbound-gateway id="searchServiceGateway"
http-method="GET"
request-channel="searchRequestChannel"
url="http://localhost:8080/query"
extract-request-payload="false"
expected-response-type="java.lang.String"
reply-timeout="50000"
charset="UTF-8"
/>
Spodziewałem się, że będzie działać w następujący sposób:
Client wysłać swoją prośbę do bramy przychodzącej /usługi/normalizacji:
get/Usługi/normalizacja q = cat & exclude = czarny
Brama poczty przychodzącej odbiera żądanie i wyślij go przez searchRequestChannel do bramy wychodzącej.
wychodząca bramka wysyła całe żądanie do usługi zewnętrznej:
GET/zapytania q = kot & wykluczyć = czarny
Ale w praktyce, bramy wychodzące wysyła pusty wniosek, który nie zawiera jakiekolwiek Tak więc moje pytanie, jaki jest najłatwiejszy sposób wysłania żądania http, które zostało zaakceptowane w przychodzącym zbiorze danych przez bramkę wychodzącą. Innymi słowy, w jaki sposób mogę zaimplementować proste proxy za pomocą narzędzi do integracji wiosennej?
Hmm. Może robię coś złego, ale nagłówek queryString w odebranej wiadomości jest pusty. Sprawdziłem obiekt komunikatu w debugerze przy pomocy metody HttpRequestExecutingMessageHandler.handleRequestMessage (Message >). I mój wyjściowy rejestrator https://gist.github.com/detsam/5538976 – masted
Przepraszam - mój błąd - przetestowałem go z fałszywym HttpRequest; pozwól mi zobaczyć, czy uda mi się wymyślić kolejną pracę. –
Zaktualizowałem swoją odpowiedź, stosując ogólne rozwiązanie, które wymaga Spring Integration 3.0, i inne rozwiązanie, które zadziała, jeśli znasz parametry zapytania. –