Hi Bill,

On Fri, Jul 17, 2009 at 7:56 PM, PrgTrdr <[email protected]> wrote:

>
> Hiranya & Asankha,
>
> Thanks very much for your help.  It's finally working!


You are most welcome and it's great to hear that you got it all working.

>
>
> It would be great to have a sample that shows asynchronous message
> handling.
> If there's a need for one I will write it when I get a few extra minutes.
> I'm already on the hook to extend the XSLT sample to show parameter
> passing.


Excellent! Please make the necessary additions to the documentation and
provide a patch through our JIRA. We always welcome new useful documentation
:)

Thanks,
Hiranya


>
> Thanks,
> Bill
>
>
>
>
> Hiranya Jayathilaka-3 wrote:
> >
> > Hi Bill,
> > My bad! I forgot to mention that you need to set the service name
> property
> > using the property mediator, before calling the send mediator. Sorry
> about
> > that. Use the property mediator as follows in your out sequence before
> the
> > send mediator.
> >
> > <property name="transport.fix.ServiceName" value="FIXProxy"
> > scope="axis2-client"/>
> >
> > The FIX transport sender requires that message context carries service
> > information. If the message was received by the FIX transport listener it
> > will set the service information. But in your scenario the message
> arrives
> > over HTTP so we need to explicitly set it at service configuration level.
> >
> > Thanks,
> > Hiranya
> >
> > On Thu, Jul 16, 2009 at 7:33 PM, PrgTrdr <[email protected]> wrote:
> >
> >>
> >> Thanks Hiranya,
> >>
> >> I believe you are offering the correct solution, however I'm still not
> >> getting it right.
> >>
> >> 1.  At your suggestion, I inserted the following <send> mediator in my
> >> <out>
> >> sequence.
> >>              <send>
> >>                <endpoint>
> >>                  <address
> >>
> >>
> uri="fix://localhost:9876?BeginString=FIX.4.2&amp;SenderCompID=OPTMED&amp;TargetCompID=BROKER"/>
> >>                </endpoint>
> >>              </send>
> >>
> >> 2.  When it reaches this point, Synapse gives the exception, "Unable to
> >> find
> >> a valid service for the message".  Here is the log output:
> >> 2009-07-16 09:37:51,343 [-] [SynapseWorker-2]  INFO LogMediator To:
> >> http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction:
> ,
> >> MessageID: urn:uuid:5191E37439E3958F4479756836588468614536389,
> Direction:
> >> response, Envelope: <?xml version='1.0'
> >> encoding='utf-8'?><soapenv:Envelope
> >> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/
> "><soapenv:Body>
> >>  <message xmlns:cfl="http://www.harts.com/cfl";
> >> xmlns:fn="http://www.w3.org/2005/02/xpath-functions"; counter="1"
> >> inSession="FIX.4.2:OPTMED->BROKER">
> >> <header>
> >> <field id="8">FIX.4.2</field>
> >> <field id="35">8</field>
> >> <field id="49">OPTMED</field>
> >> <field id="52">20090716-08:37:30.030</field>
> >> <field id="56">BROKER</field>
> >> </header>
> >> <body>
> >> <field id="37" />
> >> <field id="11" />
> >> <field id="38">1000</field>
> >> <field id="40">2</field>
> >> <field id="54">1</field>
> >> <field id="55" />
> >> <field id="59">3</field>
> >> <field id="60">20090716-08:37:30.030</field>
> >> </body>
> >> </message>
> >>  </soapenv:Body></soapenv:Envelope>
> >> 2009-07-16 09:37:51,413 [-] [SynapseWorker-2] ERROR Axis2Sender
> >> Unexpected
> >> error during sending message out
> >> org.apache.axis2.AxisFault: Unable to find a valid service for the
> >> message
> >>        at
> >>
> org.apache.synapse.transport.fix.FIXUtils.getServiceName(FIXUtils.java:655)
> >>        at
> >>
> >>
> org.apache.synapse.transport.fix.FIXTransportSender.sendMessage(FIXTransportSender.java:103)
> >>        at
> >>
> >>
> org.apache.axis2.transport.base.AbstractTransportSender.invoke(AbstractTransportSender.java:112)
> >>        at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:435)
> >>        at
> >>
> >>
> org.apache.synapse.core.axis2.DynamicAxisOperation$DynamicOperationClient.send(DynamicAxisOperation.java:190)
> >>        at
> >>
> >>
> org.apache.synapse.core.axis2.DynamicAxisOperation$DynamicOperationClient.executeImpl(DynamicAxisOperation.java:174)
> >>        at
> >>
> org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
> >>        at
> >>
> >>
> org.apache.synapse.core.axis2.Axis2FlexibleMEPClient.send(Axis2FlexibleMEPClient.java:343)
> >>        at
> >> org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:56)
> >>        at
> >>
> >>
> org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:176)
> >>        at
> >>
> >>
> org.apache.synapse.endpoints.AbstractEndpoint.send(AbstractEndpoint.java:194)
> >>        at
> >>
> org.apache.synapse.endpoints.AddressEndpoint.send(AddressEndpoint.java:59)
> >>        at
> >>
> >>
> org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:75)
> >>        at
> >>
> >>
> org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:60)
> >>        at
> >>
> >>
> org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:115)
> >>        at
> >> org.apache.synapse.mediators.MediatorWorker.run(MediatorWorker.java:69)
> >>        at
> >>
> >>
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651)
> >>        at
> >>
> >>
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676)
> >>        at java.lang.Thread.run(Thread.java:595)
> >> 2009-07-16 09:37:51,423 [-] [SynapseWorker-2]  WARN EndpointContext
> >> Endpoint
> >> : AnonymousEndpoint will be marked SUSPENDED as it failed
> >>
> >> 3.  Here is the FIXProxy definition (very similar to Sample 259):
> >>    <endpoint name="test-system" >    <!-- Must use TCPMon as proxy -->
> >>        <address uri="http://localhost:2001/api/v1"; format="soap11" />
> >>    </endpoint>
> >>
> >>    <proxy name="FIXProxy" transports="fix">
> >>      <target endpoint="test-system" >
> >>        <inSequence>
> >>          <log level="full" />
> >> .
> >> .
> >> .
> >>          <!-- Translate the message -->
> >>          <xslt key="xslt-key-req" />
> >>          <log level="full" />
> >>
> >>      </inSequence>
> >>
> >>      <outSequence>
> >>        <log level="full" />
> >>
> >>        <sequence key="HandleResponse1" />
> >>        <sequence key="HandleResponse2" />
> >>
> >>        <log level="full" />
> >>        <send />
> >>
> >>      </outSequence>
> >>    </target>
> >>
> >>    <parameter
> >>
> >>
> name="transport.fix.AcceptorConfigURL">file:repository/conf/OptMed/resources/fix/FIX-OptMed.cfg</parameter>
> >>    <parameter name="transport.fix.AcceptorMessageStore">file</parameter>
> >>    <parameter name="transport.fix.AcceptorLogFactory">file</parameter>
> >>  </proxy>
> >>
> >> 4.  Here is the FIX configuration file FIX-OptMed.cfg referenced in the
> >> FIXProxy definition (very similar to default Sample setup):
> >> [default]
> >> FileStorePath=logs/fix/OptMed
> >> FileLogPath=logs/fix/OptMed
> >> ConnectionType=acceptor
> >> StartTime=00:00:00
> >> EndTime=00:00:00
> >> HeartBtInt=30
> >> ValidOrderTypes=1,2,F
> >> SenderCompID=OPTMED
> >> TargetCompID=BROKER
> >> UseDataDictionary=Y
> >> DefaultMarketPrice=12.30
> >> ResetOnLogon=Y
> >> ResetOnDisconnect=Y
> >>
> >> [session]
> >> BeginString=FIX.4.2
> >> SocketAcceptPort=9876
> >>
> >>
> DataDictionary=C:\Apache\Synapse-Snapshot\repository\conf\OptMed\resources\fix\DD-OptMed42.xml
> >>
> >> Thanks again for your help.
> >> Bill
> >>
> >>
> >> Hiranya Jayathilaka-3 wrote:
> >> >
> >> > Hi Bill,
> >> >
> >> > On Thu, Jul 16, 2009 at 6:17 PM, PrgTrdr <[email protected]> wrote:
> >> >
> >> >>
> >> >> After more tracing and analysis I think I understand what is
> happening
> >> >> but
> >> >> I
> >> >> still need a little help.
> >> >>
> >> >> My synapse.xml configuration includes an inline task whose purpose is
> >> to
> >> >> periodically poll the WS for market data messages.  When such a
> >> message
> >> >> comes in it is received as an "asynchronous response message" and is
> >> >> passed
> >> >> to the Main Sequence.  My problem is how to get it passed to the FIX
> >> >> session--either directly through the proxy or indirectly through the
> >> Main
> >> >> sequence.
> >> >
> >> >
> >> > I believe what you want to do is to pass the market data messages
> >> coming
> >> > from the WS to the FIX acceptor session on which your proxy service is
> >> > listening on. Is that correct? In that case you could address the FIX
> >> > session by giving it an EPR and then use the send mediator to forward
> >> > messages to the FIX session. For an example let's say your FIX session
> >> has
> >> > following parameters.
> >> >
> >> > BeginString=FIX.4.4
> >> > SenderCompID=SYNAPSE
> >> > TargetCompID=MyComp
> >> >
> >> > Then we can use the following EPR to address the FIX session:
> >> >
> >> >
> >>
> fix://localhost:9876?BeginString=FIX.4.4&SenderCompID=SYNAPSE&TargetCompID=MyComp
> >> >
> >> >
> >> > Replace the port number (9876) with the actual port number on which
> >> your
> >> > FIX
> >> > proxy service is listening on. Now in the main sequence you can use
> the
> >> > send
> >> > mediator as follows to forward messages to the FIX session.
> >> >
> >> > <send>
> >> >   <endpoint>
> >> >       <address
> >> >
> >>
> uri="fix://localhost:9876?BeginString=FIX.4.4&SenderCompID=SYNAPSE&TargetCompID=MyComp
> >> > "/>
> >> >   </endpoint>
> >> > </send>
> >> >
> >> > Does this achive your goal?
> >> >
> >> > Also please note that the initial FIX transport implementation did not
> >> > support scenarios as complex as this. The enhancements required to run
> >> > this
> >> > scenario was done very recently and hence this will work only on
> >> Synapse
> >> > snapshot builds until we get the next release out. On earlier releases
> >> you
> >> > will get an NPE if you try to do this.
> >> >
> >> > Thanks,
> >> > Hiranya
> >> >
> >> >
> >> >
> >> >>
> >> >> Is there a different way to structure the task definition so Synapse
> >> >> knows
> >> >> to route the response to the FIX proxy?  (I saw a couple of Nabble
> >> >> messages
> >> >> about a 'ProxyInjector' mediator but I don't know if that is the
> >> answer
> >> >> to
> >> >> this problem (if it exists).)
> >> >>
> >> >> Here's the task definition:
> >> >>    <task class="org.apache.synapse.startup.tasks.MessageInjector"
> >> >> name="GetMarketMessages">
> >> >>        <property name="to" value="http://localhost:2001/api/v1"/>
> >> >>        <property name="format" value="soap11"/>
> >> >>        <property name="soapAction" value=""/>
> >> >>        <property name="message">
> >> >>            <GetMarketMessages xmlns="http://www.harts.com/cfl"; />
> >> >>        </property>
> >> >>        <trigger interval="10"/>
> >> >>    </task>
> >> >>
> >> >> Here's the log output:
> >> >> 2009-07-13 14:52:25,409 [-] [HttpClientWorker-15] DEBUG
> >> >> SynapseCallbackReceiver Synapse received an asynchronous response
> >> message
> >> >> 2009-07-13 14:52:25,539 [-] [HttpClientWorker-15] DEBUG
> >> >> SynapseCallbackReceiver Received To: null
> >> >> 2009-07-13 14:52:25,609 [-] [HttpClientWorker-15] DEBUG
> >> >> SynapseCallbackReceiver SOAPAction:
> >> >> 2009-07-13 14:52:25,609 [-] [HttpClientWorker-15] DEBUG
> >> >> SynapseCallbackReceiver WSA-Action:
> >> >> 2009-07-13 14:52:25,689 [-] [HttpClientWorker-15] DEBUG
> >> >> SynapseCallbackReceiver Body :
> >> >> <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope
> >> >> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
> >> >> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> >> >> xmlns:xsd="http://www.w3.org/2001/XMLSchema";><soapenv:Body>
> >> >>  <cfl:GetMarketMessagesResponse xmlns:cfl="http://www.harts.com/cfl
> ">
> >> >>   <cfl:GetMarketMessagesResponseData
> >> >> sessionID="A29A1D4D85AEF15F46D3229414619591" />
> >> >>  </cfl:GetMarketMessagesResponse>
> >> >>  </soapenv:Body></soapenv:Envelope>
> >> >> 2009-07-13 14:52:25,860 [-] [HttpClientWorker-15] DEBUG
> >> >> Axis2SynapseEnvironment Injecting MessageContext
> >> >> 2009-07-13 14:52:25,860 [-] [HttpClientWorker-15] DEBUG
> >> >> Axis2SynapseEnvironment Using Main Sequence for injected message
> >> >> 2009-07-13 14:52:25,920 [-] [HttpClientWorker-15] DEBUG
> >> SequenceMediator
> >> >> Start : Sequence <main>
> >> >> 2009-07-13 14:52:25,950 [-] [HttpClientWorker-15] DEBUG
> >> SequenceMediator
> >> >> Sequence <SequenceMediator> :: mediate()
> >> >> 2009-07-13 14:52:26,050 [-] [HttpClientWorker-15] DEBUG InMediator
> >> Start
> >> >> :
> >> >> In mediator
> >> >> 2009-07-13 14:52:26,050 [-] [HttpClientWorker-15] DEBUG InMediator
> >> >> Current
> >> >> message is a response - skipping child mediators
> >> >> 2009-07-13 14:52:26,080 [-] [HttpClientWorker-15] DEBUG InMediator
> End
> >> :
> >> >> In
> >> >> mediator
> >> >> 2009-07-13 14:52:26,080 [-] [HttpClientWorker-15] DEBUG OutMediator
> >> Start
> >> >> :
> >> >> Out mediator
> >> >> 2009-07-13 14:52:26,140 [-] [HttpClientWorker-15] DEBUG OutMediator
> >> >> Current
> >> >> message is outgoing - executing child mediators
> >> >> 2009-07-13 14:52:26,170 [-] [HttpClientWorker-15] DEBUG OutMediator
> >> >> Sequence
> >> >> <OutMediator> :: mediate()
> >> >> 2009-07-13 14:52:26,170 [-] [HttpClientWorker-15] DEBUG
> FilterMediator
> >> >> Start
> >> >> : Filter mediator
> >> >> 2009-07-13 14:52:26,280 [-] [HttpClientWorker-15] DEBUG
> FilterMediator
> >> >> XPath
> >> >> expression :
> >> >> boolean(//cfl:LoginResponse/cfl:LoginResponseData/@sessionID)
> >> >> evaluates to false and no else path - skipping child mediators
> >> >> 2009-07-13 14:52:26,350 [-] [HttpClientWorker-15] DEBUG
> FilterMediator
> >> >> End
> >> >> :
> >> >> Filter mediator
> >> >> 2009-07-13 14:52:26,451 [-] [HttpClientWorker-15] DEBUG
> FilterMediator
> >> >> Start
> >> >> : Filter mediator
> >> >> 2009-07-13 14:52:26,481 [-] [HttpClientWorker-15] DEBUG
> FilterMediator
> >> >> XPath
> >> >> expression : boolean(//cfl:GetMarketMessagesResponseData) evaluates
> to
> >> >> true
> >> >> - executing child mediators
> >> >> 2009-07-13 14:52:26,531 [-] [HttpClientWorker-15] DEBUG
> FilterMediator
> >> >> Sequence <FilterMediator> :: mediate()
> >> >> .
> >> >> .
> >> >> .
> >> >> 2009-07-13 14:52:26,851 [-] [HttpClientWorker-15] DEBUG
> FilterMediator
> >> >> End
> >> >> :
> >> >> Filter mediator
> >> >> 2009-07-13 14:52:26,851 [-] [HttpClientWorker-15] DEBUG OutMediator
> >> End
> >> :
> >> >> Out mediator
> >> >> 2009-07-13 14:52:26,931 [-] [HttpClientWorker-15] DEBUG
> >> SequenceMediator
> >> >> End
> >> >> : Sequence <main>
> >> >>
> >> >> Appreciate any help...
> >> >> Thanks,
> >> >> Bill
> >> >>
> >> >>
> >> >> Hiranya Jayathilaka-3 wrote:
> >> >> >
> >> >> > Hi Bill,
> >> >> >
> >> >> > On Thu, Jul 16, 2009 at 2:40 AM, PrgTrdr <[email protected]>
> wrote:
> >> >> >
> >> >> >>
> >> >> >> I have cloned Sample 259 to implement a use case where a FIX
> client
> >> >> >> communicates with a Web Service.  The system is working well as
> far
> >> as
> >> >> 1)
> >> >> >> establishing the FIX session from the client to Synapse, 2) Logon,
> >> >> >> 3)Sending
> >> >> >> a New Order message, 4)performing an XSLT to create a WS request,
> >> >> >> 5)sending
> >> >> >> the Request to the WS, 6)receiving back a Response from the WS,
> >> >> >> 7)performing
> >> >> >> an XSLT to convert the SOAP response to an XML-encapsulated FIX
> >> >> message.
> >> >> >> But then the response message never flows back to the FIX
> transport
> >> (I
> >> >> >> can
> >> >> >> tell by examining the QuickFIX/J logs).
> >> >> >>
> >> >> >> I am receiving (and converting) the WS Response message in a
> >> standard
> >> >> >> "<out>" sequence.  At the end I placed
> >> >> >>
> >> >> >> <send>
> >> >> >>    <endpoint key="FIXProxy"/>
> >> >> >> </send>
> >> >> >>
> >> >> >> to see if that would make it work, but the message doesn't go out
> >> to
> >> >> FIX,
> >> >> >> nor does it show up in the FIXProxy <outSequence> (I put some log
> >> >> >> mediators
> >> >> >> in there to trace activity).
> >> >> >>
> >> >> >> Sample 259 is one-way only (FIX->SOAP).  Can someone give me an
> >> idea
> >> >> >> about
> >> >> >> what needs to be done to make this two-way?  Perhaps changes to
> the
> >> >> >> FIXProxy
> >> >> >> configuration?
> >> >> >
> >> >> >
> >> >> > How about placing an empty <send/> element in the <outSequence> of
> >> your
> >> >> > proxy service? I think that should do the trick. Anyway  please
> send
> >> in
> >> >> > your
> >> >> > full Synapse configuration for us to get a clear idea of the
> >> scenario.
> >> >> >
> >> >> > Thanks,
> >> >> > Hiranya
> >> >> >
> >> >> >
> >> >> >>
> >> >> >> Thanks,
> >> >> >> Bill
> >> >> >> --
> >> >> >> View this message in context:
> >> >> >>
> >> >>
> >>
> http://www.nabble.com/HTTP--%3E-FIX-Response-Handling-tp24505424p24505424.html
> >> >> >> Sent from the Synapse - User mailing list archive at Nabble.com.
> >> >> >>
> >> >> >>
> >> >> >
> >> >> >
> >> >> > --
> >> >> > Hiranya Jayathilaka
> >> >> > Software Engineer;
> >> >> > WSO2 Inc.;  http://wso2.org
> >> >> > E-mail: [email protected];  Mobile: +94 77 633 3491
> >> >> > Blog: http://techfeast-hiranya.blogspot.com
> >> >> >
> >> >> >
> >> >>
> >> >> --
> >> >> View this message in context:
> >> >>
> >>
> http://www.nabble.com/HTTP--%3E-FIX-Response-Handling-tp24505424p24515672.html
> >> >> Sent from the Synapse - User mailing list archive at Nabble.com.
> >> >>
> >> >>
> >> >
> >> >
> >> > --
> >> > Hiranya Jayathilaka
> >> > Software Engineer;
> >> > WSO2 Inc.;  http://wso2.org
> >> > E-mail: [email protected];  Mobile: +94 77 633 3491
> >> > Blog: http://techfeast-hiranya.blogspot.com
> >> >
> >> >
> >>
> >> --
> >> View this message in context:
> >>
> http://www.nabble.com/HTTP--%3E-FIX-Response-Handling-tp24505424p24517040.html
> >> Sent from the Synapse - User mailing list archive at Nabble.com.
> >>
> >>
> >
> >
> > --
> > Hiranya Jayathilaka
> > Software Engineer;
> > WSO2 Inc.;  http://wso2.org
> > E-mail: [email protected];  Mobile: +94 77 633 3491
> > Blog: http://techfeast-hiranya.blogspot.com
> >
> >
>
> --
> View this message in context:
> http://www.nabble.com/HTTP--%3E-FIX-Response-Handling-tp24505424p24535501.html
> Sent from the Synapse - User mailing list archive at Nabble.com.
>
>


-- 
Hiranya Jayathilaka
Software Engineer;
WSO2 Inc.;  http://wso2.org
E-mail: [email protected];  Mobile: +94 77 633 3491
Blog: http://techfeast-hiranya.blogspot.com

Reply via email to