[ 
https://issues.apache.org/jira/browse/UIMA-5385?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jerry Cwiklik closed UIMA-5385.
-------------------------------
    Resolution: Fixed
      Assignee: Jerry Cwiklik

Added support for targeting specific instance of uima-as service. The service 
uses a default selector with a format <IP>:<PID> and will process messages that 
match the value of property TargetServiceId. Optionally, a service deployer can 
override default selector with a -DTargetServiceId command line property

> UIMA-AS: add support for targeting specific service instance via JMS
> --------------------------------------------------------------------
>
>                 Key: UIMA-5385
>                 URL: https://issues.apache.org/jira/browse/UIMA-5385
>             Project: UIMA
>          Issue Type: New Feature
>          Components: Async Scaleout
>            Reporter: Jerry Cwiklik
>            Assignee: Jerry Cwiklik
>             Fix For: 2.10.0AS
>
>
> With multiple service instances getting messages from a shared JMS queue 
> there is no way to know which instance gets a particular message. By design, 
> the JMS queue provides natural load balancing and a broker routes a message 
> to a service which has capacity (ready thread) to process it.
> Targeting services would support interesting use cases. For example, sending 
> a message to a specific service instance could be used to determine if the 
> service is viable or not. Targeted messages can also be considered of high 
> processing priority and processed ahead of 'normal' priority messages. 
> JMS supports targeting with selectors. A message listener is configured to 
> indicate which messages it wants to receive. The selection is based on a 
> value of a JMS property included in a message. The JMS selector syntax is 
> based on SQL 92 spec which allows for compound expressions that include: AND, 
> OR, NOT, etc. The message selection is done by the broker not the consumer. 
> The broker will route messages to a consumer whose selector matches property 
> values in a message.
> Current UIMA-AS already supports two selectors, one for handling Process 
> requests and the other for GetMeta. Each of these has a dedicated listener 
> and thread(s) to process messages. The proposal is to add yet another 
> listener with a new selector to support targeting. The service selector value 
> can be user defined via -DHighPriorityServiceId=XXX. If the -D is not 
> present, the UIMA-AS will create a new listener with a selector = [Node IP: 
> PID] which would uniquely identify a service. 
> It would be up to the client application to determine value for the targeting 
> string (selector). The UIMA-AS client will provide a way for an application 
> to specify targeting string via a Map which is passed into the initialize( ) 
> method of the UIMA-AS client. This would allow for pinning a client to a 
> specific service instance. All messages from the client would be processed by 
> that service. If targeting string is not present, targeting will not be 
> enabled and messages will be processed by an arbitrary service instance.
> As mentioned, targeted messages will have a high priority and will be 
> processed first. A new java priority queue will be added to the UIMA-AS 
> service to enable sorting of messages according to the priority. 



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to