[JBoss JIRA] Created: (JBESB-1504) CBR using rules has poor performance
by Martin Vecera (JIRA)
CBR using rules has poor performance
------------------------------------
Key: JBESB-1504
URL: http://jira.jboss.com/jira/browse/JBESB-1504
Project: JBoss ESB
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: Content Based Routing
Affects Versions: 4.2.1
Environment: SOA-P 4.2.0.beta1
Reporter: Martin Vecera
We have a simple performance that uses ContentBasedRouter to route XML messages:
<action class="org.jboss.soa.esb.actions.ContentBasedRouter" name="ContentBasedRouter">
<property name="ruleSet" value="MyESBRules-XPath.drl"/>
<property name="ruleLanguage" value="XPathLanguage.dsl"/>
<property name="ruleReload" value="true"/>
<property name="destinations">
<route-to destination-name="regular1" service-category="wiretapCategory1" service-name="regularService"/>
<route-to destination-name="regular2" service-category="wiretapCategory1" service-name="regularService"/>
<route-to destination-name="regular3" service-category="wiretapCategory1" service-name="regularService"/>
<route-to destination-name="regular4" service-category="wiretapCategory1" service-name="regularService"/>
<route-to destination-name="regular5" service-category="wiretapCategory1" service-name="regularService"/>
<route-to destination-name="regular6" service-category="wiretapCategory1" service-name="regularService"/>
<route-to destination-name="regular7" service-category="wiretapCategory1" service-name="regularService"/>
<route-to destination-name="regular8" service-category="wiretapCategory1" service-name="regularService"/>
<route-to destination-name="regular9" service-category="wiretapCategory1" service-name="regularService"/>
<route-to destination-name="regular0" service-category="wiretapCategory1" service-name="catchService"/>
</property>
</action>
I have created a rule set of 100 rules. Like this:
package com.jboss.soa.esb.routing.cbr
import org.jboss.soa.esb.message.Message;
import org.jboss.soa.esb.message.format.MessageType;
expander XPathLanguage.dsl
global java.util.List destinations;
rule "ProductId1"
salience 100
when
xpathEquals "/Order/OrderLines/OrderLine/Product/@productId", "1"
then
Destination : "regular1";
end
...
rule "ProductId299"
salience 100
when
xpathEquals "/Order/OrderLines/OrderLine/Product/@productId", "299"
then
Destination : "regular0";
end
rule "Default rule"
salience 1
when
then
Destination : "regular0";
end
See https://svn.corp.jboss.com/repos/soa/trunk/qa/tests/quickstarts/performan... for the whole file.
The performance is very poor (see SOA-240 for reports). Only a tens of messages per second.
What's the problem here? Is the Rules engine really so slow? Or is it parsing the file every time a message arrives?
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
16 years, 5 months
[JBoss JIRA] Created: (JBESB-1153) File Gateway: Consume only a single file at a time
by Burr Sutter (JIRA)
File Gateway: Consume only a single file at a time
--------------------------------------------------
Key: JBESB-1153
URL: http://jira.jboss.com/jira/browse/JBESB-1153
Project: JBoss ESB
Issue Type: Feature Request
Security Level: Public (Everyone can see)
Components: Transports
Affects Versions: 4.2
Reporter: Burr Sutter
Assigned To: Mark Little
Fix For: 4.3
The current File gateway consumes files at a rate faster than the internal/native listener (typically JMS-based) and its associated action chain. This request is for a configuration property that causes the rate of consumption of the file gateway to match the underlying internal/native listener. Basically a file would not be pulled from disk until it has completely passed through the action chain.
Here are some notes related to this use case:
I have 1000+ files which are very huge in size and when all the
files are kept in the folder they are read at same time and placed in
configured JMS Queue.
- When all the files are placed in Queue there is a chance that the size
of messages in Queue may exceed and it may not accept new messages?
Or
- Sometimes the case may be like the input folder is monitored by one
person and the message processing is monitored by other person. In this
case when all the files are read at once it gives a wrong assumption
that all files are processed but where as due to some application
failure the messages may still be in queue.
Or
- Its always a good option to be able to see how many messages are still
in process in the folder rather than browsing the JMS queue and looking
for Queue depth. In this case if you look at Queue depth sometimes it
may be give you wrong count of messages as there is a chance that some
other application also put message some messages into the same queue,
when Queue is configured for application sharing.
Or
- If you want to replace a single file out of 1000+ files in the input
folder while in middle of processing the files, it will be easy if the
files are read one at a time rather going and deleting the messages from
JMS queue after they are read at once and placed in Queue.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
16 years, 6 months
[JBoss JIRA] Created: (JBESB-643) Add BRMS support to RuleService
by Jeff DeLong (JIRA)
Add BRMS support to RuleService
--------------------------------
Key: JBESB-643
URL: http://jira.jboss.com/jira/browse/JBESB-643
Project: JBoss ESB
Issue Type: Feature Request
Security Level: Public (Everyone can see)
Components: Content Based Routing
Reporter: Jeff DeLong
Assigned To: Mark Little
Add BRMS support to the platform. In particular the capability to specify a rulesBase in the ruleService configuration and have the ruleService retrieve the ruleBase from the BRMS instead of creating ruleBase on the fly from drl / dsl files on the classpath. This will allow for better maintenance and management of the rules, as well as "hot" deployment on the rules.
Note - I listed this under CBR as there is not a RuleService Component listed, however it applies to both CBR and RuleService.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
16 years, 6 months
[JBoss JIRA] Created: (JBESB-644) Add support for both stateless and stateful RuleServices
by Jeff DeLong (JIRA)
Add support for both stateless and stateful RuleServices
--------------------------------------------------------
Key: JBESB-644
URL: http://jira.jboss.com/jira/browse/JBESB-644
Project: JBoss ESB
Issue Type: Feature Request
Security Level: Public (Everyone can see)
Components: Content Based Routing
Reporter: Jeff DeLong
Assigned To: Mark Little
The current JBossRuleRouter (which currently implements the RuleService) uses StatefulSessions in a Stateless way. Which is fine in most cases). JBossRulesRouter creates a new workingMemory (StatefulSession), asserts facts, and should (although it does not currently, disponse of the workingMemory - See also JBESB-642. ).
JBoss Rules support StatelessSessions. The need to dispose of workingMemory is eliminated if StatelessSessions are used. StatelessSession have some limitations compared to Stateful, but are designed for instance, for rule applications deployed as web services, where basically a single method needs to transfer all the data, create the workingMemory, assert the data (as a single object or list of objects) and fire the rules. CBR can be thought of as a stateless service. A single Message object is asserted into working memory, and the rules are fired. Many rule application will be like this.
However, some rule applications are truly stateful. For example, the rules accumulated facts with specific attribute values over time and then fired when a certain number was reached. These types of services would require that the workingMemory not be re-created with the receipt of each message, and disposed of after the rules have fired, but have a long-lived working memory that gets added to over time. The current JBossRulesRouter cannot support truly stateful services because it creates a new workingMemory with each message. Truly stateful interactions would require a way to identify the stateful session / working memory that a message is for, and also when to finally dispose of it.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
16 years, 6 months