Uima AS service always replies to a client that sent the request. A request messages contains a temp reply queue where the service must return a reply. From the client perspective it is always Request-Reply pattern. The framework provides no support for overriding this behavior.
If you need to forward a reply to a different queue, you need to add custom jms code to the application client and call it whenever you receive a reply from a service. Jerry C On Tue, Oct 12, 2010 at 2:44 AM, Diman Karagiozov <[email protected]>wrote: > Hi there, > > I am working on a project that utilizes UIMA Async Scale-out capabilities. > > There are two client applications that send messages in an "input.queue" > and several UIMA aggregate engines that fetch messages from this input > queue. What I want to achieve is to send the annotated serialized CAS to an > "output.queue" depending on the client application that sent the initial > message. In other words - if the message comes from "client A", after > processing send it to "output.queue.A"; if it comes from "client B", send it > "output.queue.B". > > This is how I am sending the message to an UIMA worker: > > final UimaAsynchronousEngine client = ...; > > final CAS cas = client.getCAS(); > cas.reset(); > > cas.setDocumentLanguage( lang ); > cas.setDocumentText( StringUtils.stripNonValidXMLCharacters( > text ) ); > > final String id = client.sendCAS( cas ); > > Somehow, I have to set the client ID but I do not want to add it in the CAS > as annotation. Is there another way to add such information that is later > available in the process methods of the primitive engines? If this is > possible I can create a new primitive engine (Finalizer) that reads the > client ID and implements the messaging router functionality. > > Are there other pasterns that are more suitable for implementing the > above-described scenario? > > thanks > Diman >
