Bug 814134

Summary: Enable configuration and propagation of the JMS priority through the ESB aware services
Product: [JBoss] JBoss Enterprise SOA Platform 5 Reporter: kconner
Component: JBossESBAssignee: Nobody <nobody>
Status: VERIFIED --- QA Contact: Jennifer Albertson <jalberts>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 5.3.0 GACC: jcoleman, jpechane, ldimaggi, soa-p-jira
Target Milestone: ER4   
Target Release: 5.3.0 GA   
Hardware: All   
OS: All   
Whiteboard:
Fixed In Version: 5.3.0 GA Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description kconner 2012-04-19 09:57:56 UTC
Description of problem:

The feature request is to have a priority configured on a gateway and then have that propagate through the ESB services which are invoked as a result.

The priority should be applied to any JMS transports which are used to communicate with ESB services, using the JMS message setJMSPriorty, and propagated through those services to subsequent ESB service invocations.

Expected results:

JMS priority can be used by reorder messages arriving at JMS endpoints so that certain services can take precedence over lower priority services.

Additional info:

I have a good idea of how this can be addressed.

Comment 1 Len DiMaggio 2012-04-25 18:57:15 UTC
Just to confirm - does JBossESB have to do anything with this priority, other than define it for a gateway and propagate it in the messages that pass through that gateway?

Comment 2 Len DiMaggio 2012-04-25 19:48:26 UTC
Question are JBossESB editor/tooling changes needed?

Comment 3 kconner 2012-04-25 21:42:15 UTC
(In reply to comment #1)
> Just to confirm - does JBossESB have to do anything with this priority, other
> than define it for a gateway and propagate it in the messages that pass through
> that gateway?

The priority needs to be applied to each JMS message sent, directly or indirectly, as a result of the incoming messages at the gateway.

Comment 4 kconner 2012-04-25 21:45:25 UTC
(In reply to comment #2)
> Question are JBossESB editor/tooling changes needed?

No editor/tooling changes are being requested at this time, only server side.

Comment 5 Len DiMaggio 2012-05-01 16:28:43 UTC
So:

'...The priority needs to be applied to each JMS message sent, directly or
indirectly, as a result of the incoming messages at the gateway...'

The ESB will also be throttling throughput based on message priority?

Comment 6 kconner 2012-05-01 18:31:16 UTC
(In reply to comment #5)
> The ESB will also be throttling throughput based on message priority?

The ESB will do nothing more than consume messages as they are provided by the JMS provider; the JMS providers should be delivering the messages based on the JMS priority.

The JMS API defines 10 priority levels 0 (lowest) - 9 (highest).  The default level is 4.

Comment 7 kconner 2012-05-24 19:05:00 UTC
Functionality added in ESB through JBESB-3786

Comment 8 David Le Sage 2012-06-05 04:01:59 UTC
Documented.

Comment 9 Filip Nguyen 2012-06-14 14:37:28 UTC
I am using SOA Platform 5.3 ER3. In this version it seems that the functionality is not there.

After investigating futher I have come to conclusion that the functionality wasn't productized into this version of SOA Platform because I do not see the changes from  branch JBESB_4_11_CP@38100 in jboss-rosetta.jar (e.g. new class MessageFlowContext.java is not there)

Comment 10 Filip Nguyen 2012-06-27 08:55:16 UTC
JIRA https://issues.jboss.org/browse/JBESB-3786 states that it should be possible to set it on listener/bus/provider.  

I couldn't set it on a bus nor provider. The esb fails to deploy with validation error:


10:44:29,529 INFO  [org.jboss.soa.esb.listeners.deployers.mc.EsbDeployment] Starting ESB Deployment 'JmsPriority.esb'
10:44:29,531 ERROR [org.jboss.soa.esb.listeners.config.model.ModelParser$XmlErrorHandler] ERROR-null-26:cvc-complex-type.2.4.d: Invalid content was found starting with element 'property'. No child element is expected at this point.

Comment 11 kconner 2012-07-09 16:38:25 UTC
Likely caused by having the property element in the wrong place.

Using the helloworld quickstart as an example, this is how it could be configured

          <jms-provider name="JBossMQ" connection-factory="ConnectionFactory">
===>          <property name="messageFlowPriority" value="4"/>
              <jms-bus busid="quickstartGwChannel">
===>              <property name="messageFlowPriority" value="4"/>
                  <jms-message-filter
                      dest-type="QUEUE"
                      dest-name="queue/quickstart_helloworld_Request_gw"
                   />
              </jms-bus>
...
                <jms-listener name="JMS-Gateway"
                    busidref="quickstartGwChannel"
                    is-gateway="true">
===>               <property name="messageFlowPriority" value="4"/>
                </jms-listener>

Comment 12 Filip Nguyen 2012-07-11 08:02:29 UTC
Yes you are right Kevin. I have placed the property elements after to the end of the jms-provider element and to the end of the jms-bus element which gives a validation error.

Comment 13 PnT Account Manager 2017-12-11 13:33:57 UTC
Employee 'fnguyen' has left the company.