Hi Marci,

  I would say that from("jms:Sahara")... has MEP InOUt so In
message with header "foo",
and OUT mess

On Fri, Feb 14, 2020 at 11:43 PM Marci <kilidar...@gmail.com> wrote:

>
>  I understand that the new Processor(){} is for the message being sent to
> the consumers (from(route)) and this is working fine.
> What I am not understanding is why the ProducerTemplate.request() is not
> returning an exchange back at the end of the route.
> For example.
> Exchange reply = producerTemplate.request("jms:Sahara", new Processor() {
>         public void process(final Exchange exchange) {
>         exchange.getIn().setHeader(“test”,”foo”)
>         }
> Route
>      From(jms:Sahara”)
>           .log(LoggingLevel.INFO,"* Test ID: ${header.test}" )
>           .setHeader(“test”,”bar”);
> end route
>
> assertThat(“return should be
> bar”,reply.getIn().getHeader(“test”),equalTo(“bar”)
> but it is still “foo”
> This is failing when  it should pass
>
> Maybe I’m reading these wrong
> From Javadoc.io
> Exchange        request(Endpoint endpoint, Processor processor)
> Sends an exchange to an endpoint using a supplied processor Uses an
> ExchangePattern.InOut message exchange pattern.
>
> from the camel apache org website
> request*() methods
>
> The send*() methods use the default Message Exchange Pattern (InOnly,
> InOut etc) as the endpoint. If you want to explicitly perform a
> request/response (InOut) you can use the request*() methods instead of the
> send*() methods.
>
> E.g. let’s invoke an endpoint and get the response:
>
>
>
> >Camel › Camel - Users › Camel - Users
> >kilidarria
>
> >Re: ProducerTemplate.request() not returning complete Exchange.
> >‹ Previous Topic Next Topic ›
>
> classic         Classic         list    List    threaded        Threaded
>  X  Turn off highlighting 1 message Options Options
>
> Classic Threaded   Reply   More   Close
> Jan 15, 2020; 12:34am Claus Ibsen-2 Claus Ibsen-2 Re:
> ProducerTemplate.request() not returning complete Exchange.
> Hi
>
> The new Processor(){ } in the request method of the producer template is
> not for the reply message, but for preparing the message to send (eg the
> input message).
>
> On Tue, Jan 14, 2020 at 9:16 PM Wilken Marci J <
> [hidden email]> wrote:
>
> > Based on the documentation I was reading the
> > ProducerTemplate.request(<URL>, Processor) should return the  Exchange
> > information from the route that was called.  When I am running my test on
> > this it is returning the body information in the
> > exchange.getOut().getBody() but the exchange.getOut().getHeaders() has
> the
> > headers that I sent and not returned headers that I see if I look at the
> > mock endpoint.  I am expecting it to return the header and body data in
> the
> > Exchange.getIn().  Since this test is calling a jms message Queue  (JBoss
> > EAP 7.2 Fuse 7.3) I am expecting this to return the same thing as the a
> > call from another route would see.  Am I understanding this wrong or am I
> > missing a setting?
> >
> >
> >
> > *public void testConnection() throws Exception {*
> >
> > *       log.info <http://log.info>("----->>  Begin testConnection
> > <<-----");*
> >
> > *       Assert.assertNotNull("Expected QueueRoute-context to exist",
> > camelctx);*
> >
> > *       Assert.assertEquals(ServiceStatus.Started,
> camelctx.getStatus());*
> >
> >
> >
> > *       MockEndpoint mock = camelctx.getEndpoint("mock:JobLogResult",
> > MockEndpoint.class);*
> >
> > *       assertNotNull("Expected mock:JobLogResult to exist", mock);*
> >
> > *       mock.reset();*
> >
> > *       mock.expectedMessageCount(1);*
> >
> >
> >
> > *       ProducerTemplate producerTemplate =
> > camelctx.createProducerTemplate();*
> >
> > *       Assert.assertNotNull("Expected producerTemplate to exist",
> > producerTemplate);*
> >
> >
> >
> > *       Exchange reply =
> > producerTemplate.request("jms:queue:Sahara.Core.JobIdRequest", new
> > Processor() {*
> >
> >
> >
> > *              public void process(final Exchange exchange) {*
> >
> >
> >
> > *                     Map<String, Object> headers = new HashMap<String,
> > Object>();*
> >
> > *                     headers.put("RequestingSource", requestingSource);*
> >
> > *                     headers.put("AuthorizationKey", authorizationKey);*
> >
> > *                     headers.put("RequestType", "testConnection");*
> >
> >
> >
> > *                     Map<String, Object> payload = new HashMap<String,
> > Object>();*
> >
> >
> >
> > *                     exchange.getIn().setHeaders(headers);*
> >
> > *                     exchange.getIn().setBody(payload);*
> >
> > *                     exchange.setPattern(ExchangePattern.InOut);*
> >
> >
> >
> > *              }*
> >
> > *       });*
> >
> > *       // these fail*
> >
> > *       assertThat("Request was un-successful", (
> > reply.getIn().getHeader("SQLErrorMessage") == null ? "null"
> > :((String)reply.getIn().getHeader("SQLErrorMessage"))).toLowerCase()
> > ,equalTo("success"));*
> >
> > *       assertThat("Didn't Return Data ", (int)
> > reply.getIn().getHeader("CamelSqlRowCount"),equalTo(1));*
> >
> >
> >
> >
> >
> > *       // these are successfull.*
> >
> > *       List<Exchange> list = mock.getReceivedExchanges();*
> >
> > *       Exchange reply2 = list.get(0);*
> >
> > *       assertThat("Request was un-successful", (
> > reply2.getIn().getHeader("SQLErrorMessage") == null ? "null"
> > :((String)reply2.getIn().getHeader("SQLErrorMessage"))).toLowerCase()
> > ,equalTo("success"));*
> >
> > *       assertThat("Didn't Return Data ", (int)
> > reply2.getIn().getHeader("CamelSqlRowCount"),equalTo(1));*
> >
> > *}*
> >
> >
> >
> > *Route*
> >
> > *from("jms:queue:Sahara.Core.JobIdRequest?exchangePattern=InOut")*
> >
> > *      .routeId("JobLogRouter")*
> >
> > *
> >
> .log(LoggingLevel.INFO,"*************************************************")
> > *
> >
> > *       .log(LoggingLevel.INFO,"* Beginning JobAuditingRequest")*
> >
> > *       .log(LoggingLevel.INFO,"* Requesting Source:
> > ${header.RequestingSource} " )*
> >
> > *       .log(LoggingLevel.INFO,"* Request Type: ${header.RequestType} "
> )*
> >
> > *
> >
> .log(LoggingLevel.INFO,"*************************************************")
> > *
> >
> > *       .choice()    *
> >
> > *              .when(simple ("${header.RequestType} == \"complete\""))*
> >
> > *                     .to("direct:CompleteJob")*
> >
> > *                     .endChoice()*
> >
> > *
> > .when().simple("${header.RequestType?.equalsIgnoreCase(\"audit\")}")*
> >
> > *                     .to("direct:LogAudit")*
> >
> > *                     .endChoice()*
> >
> > *              .when(simple ("${header.RequestType} == \"error\""))*
> >
> > *                     .to("direct:LogError")*
> >
> > *                     .endChoice()*
> >
> > *
> > .when().simple("${header.RequestType?.equalsIgnoreCase(\"whoami\")}")*
> >
> > *                 .to("direct:WhoAmI")*
> >
> > *                 .endChoice()*
> >
> > *
> >
> .when().simple("${header.RequestType?.equalsIgnoreCase(\"testConnection\")}")*
> >
> > *                 .to("direct:ConnectionTest")*
> >
> > *                 .endChoice()*
> >
> > *
> > .when().simple("${header.RequestType?.equalsIgnoreCase(\"start\")} ||
> > ${header.RequestType?.equalsIgnoreCase(\"open\")}")*
> >
> > *                 .to("direct:InitialJobRequest")*
> >
> > *                 .endChoice()   *
> >
> > *              .otherwise()*
> >
> > *                     .process(new Processor() {*
> >
> > *                           public void process(Exchange exchange) throws
> > Exception {*
> >
> > *                       //     Message in = exchange.getIn();*
> >
> > *                                  Map<String, Object> payload = new
> > HashMap<String, Object>();*
> >
> > *                                  exchange.setOut(exchange.getIn());*
> >
> > *                                  payload = (Map<String,Object>)
> > exchange.getIn().getBody();*
> >
> > *                                  payload.put("whoami", "I am " +
> > getContext().resolvePropertyPlaceholders("{{whoami}}") );*
> >
> > *                                  payload.put("SQLErrorMessage", "No
> > Choice Provided");*
> >
> > *                                  payload.put("SQLErrorNumber", -1);*
> >
> > *                                  exchange.getOut().setBody(payload);*
> >
> > *
> > exchange.getOut().setHeader("RequestType", "failed");*
> >
> >
> >
> > *                                  }*
> >
> >
> >
> > *                     })*
> >
> > *                     .endChoice()*
> >
> > *       .end()*
> >
> > *       .process(new Processor() {*
> >
> > *              public void process(Exchange exchange) throws Exception {*
> >
> >
> >
> > *                     exchange.setOut(exchange.getIn());*
> >
> > *
> >
> exchange.getOut().setHeader("BodyType",exchange.getIn().getBody().getClass().getName());*
> >
> > *                     exchange.getOut().setHeader("BodyEncoding",
> "JSON");*
> >
> > *                     String payloadJson = new
> > ObjectMapper().writeValueAsString(exchange.getIn().getBody());*
> >
> > *                     log.debug(payloadJson);*
> >
> > *                     exchange.getOut().setBody(payloadJson);*
> >
> >
> >
> > *              }*
> >
> >
> >
> > *       })*
> >
> > *       .log(LoggingLevel.INFO, "Request results Job ID Request : \r\n
> > Header:  ${headers} \r\n Body:  ${body} ")*
> >
> >
> >
> > *       .to("mock:JobLogResult")*
> >
> > *          .onException(Exception.class)*
> >
> > *              .setHeader("MESSAGE_INFO", constant("Failure to Process
> > Audit Job"))*
> >
> > *              .setHeader("ROUTE_STOP", constant(Boolean.TRUE))*
> >
> > *              .log(LoggingLevel.ERROR, "${exception.stackTrace}")*
> >
> > *              .maximumRedeliveries("0")*
> >
> > *              .redeliveryDelay("0")*
> >
> > *              .id("_onExceptionCron")*
> >
> > *              .handled(true)*
> >
> > *              ;*
> >
> > *       ;*
> >
> >
> >
> >
> >
> > * from("direct:ConnectionTest")*
> >
> > *       .routeId("ConnectionTest")*
> >
> > *       .log(LoggingLevel.INFO, "Beginning Connection Test")*
> >
> > *       .log(LoggingLevel.INFO,"whoami ->> {{whoami}}")*
> >
> > *       .log(LoggingLevel.INFO, "Request: \r\n Header:  ${headers} \r\n
> > Body:  ${body} ")*
> >
> > *       .to("sql:select name from sys.sysusers where uid =
> > 0?dataSource=#Sahara_DS")*
> >
> > *       .log(LoggingLevel.INFO, "Request Result: \r\n Header:  ${headers}
> > \r\n Body:  ${body} ")*
> >
> >
> >
> > *       .process(new Processor() {*
> >
> > *              public void process(Exchange exchange) throws Exception {*
> >
> > *              Map<String, Object> payload = new HashMap<String,
> > Object>();*
> >
> > *              exchange.setOut(exchange.getIn());*
> >
> > *              ArrayList<Map<String,Object>> body =
> > (ArrayList<Map<String,Object>>)  exchange.getIn().getBody();*
> >
> > *              payload.put("whoami", "I am " +
> > getContext().resolvePropertyPlaceholders("{{whoami}}") );*
> >
> > *              body.add(payload);*
> >
> > *              exchange.getOut().setBody(body);*
> >
> > *              exchange.getOut().setHeader("RequestType", "complete");*
> >
> > *              exchange.getOut().setHeader("SQLErrorMessage",
> "Success");*
> >
> > *       }*
> >
> >
> >
> > *       })*
> >
> > *       .onException(SQLException.class)*
> >
> > *              .setHeader("MESSAGE_INFO", constant("Sql Connection
> > Error"))*
> >
> > *              .setHeader("ROUTE_STOP", constant(Boolean.TRUE))*
> >
> > *              .log(LoggingLevel.ERROR, "${exception.stackTrace}")*
> >
> > *              .maximumRedeliveries("0")*
> >
> > *              .redeliveryDelay("0")*
> >
> > *              .id("_onExceptionConnectionTest")*
> >
> > *              .handled(false)*
> >
> > *       ;*
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > Regards-
> >
> > Marci Wilken
> >
> > Operations Architect
> >
> > Office of Information Services
> >
> > OHA/DHS/CAF-CW/OR-KIDS
> >
> > 503.378.2405
> >
> > [image: Description: Description: Description:
> > cid:image001.png@01CCF13E.2FACEC70][image: OHAsiglogo]
> >
> > CONFIDENTIALITY NOTICE
> >
> > *This email may contain information that is privileged, confidential, or
> > otherwise exempt from disclosure under applicable law. If you are not the
> > addressee or it appears from the context or otherwise that you have
> > received this email in error, please advise me immediately by reply
> email,
> > keep the contents confidential, and immediately delete the message and
> any
> > attachments from your system. *
> >
> >
> >
> >
> >
> «  [hide part of quote]
>
>
> --
> Claus Ibsen
> -----------------
> http://davsclaus.com @davsclaus
> Camel in Action 2: https://www.manning.com/ibsen2
> « Return to Camel - Users  |  12 views
> Free forum by Nabble    Disable Popup Ads | Edit this page
>
>

Reply via email to