[Design of Messaging on JBoss (Messaging/JBoss)] - Streamlined delivery of messages to consumer
by timfox
I have refactored the way we deliver messages to consumers.
This has resulted in a major simplification of the code, aiding it's clarity and improving it's maintainability as well as hopefully being more performant.
The way it is designed to work is as follows:
The client side consumer has a local buffer with a max size of maxBufferSize - it always consumes messages locally from that buffer.
The server will send messages as fast as it can as they arrive to the consumer. It writes the messages onto the wire and doesn't wait for a response (i.e. it's not RPC - so we are not held ransom by networks with highbandwidth but high latency).
On the other end of the wire, messages are read off and added to the buffer.
If the buffer becomes full, because the consumer consumption rate cannot keep up with the rate the server is sending, then the client side consumer sends a flow rate change message to the server with an argument of zero.
(The flow rate change message is sent asynch from client to server and has a parameter "newRate" which means "please try and send messages at this new rate". Currently we are only binary, i.e. value = 0 means stop sending and value >0 means send as fast as you can. But this is a placeholder for the future where specific rates can be specified.)
The server receives the flow rate change (0) and stops sending messages. The client consumes the backlog and when the number remaining reaches bufferSize / 2 it sends another flow rate change message to the server with a +ve value.
The server receives this and starts sending again.
Note that we do not wait until the buffer is empty before sending the asynch flow rate change (+ve) message since this would introduce extra latency since the consumer wouldn't be consuming while it was waiting for new messages to arrive.
Currently we are waiting on remoting to release a version with true asynchronous invokes (which are in remoting HEAD but not in a release) but this is done we should see the benefits.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3996046#3996046
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3996046
17 years, 9 months
[Design of JBoss jBPM] - Re: Web Console: Context Menus and Navigation
by kukeltje
some other comments:
- I expected the task I'm in to be highlighted when I opened the diagram. It isn't, while it is when you go to the process instance and look at the diagram. Is that on purpose?
- The task instance definition is imo not realy usefull. Two of the three tabs are already in the instance menu/tabs only the summary is a little different. Besides that I do not know how to access the task definition if I'm in a process definition page. Maybe that page should contain a tab 'tasks' with a list of the defined tasks and the sub tabs that are now in the page you go to from task definition menu item.
I have this feeling that the task instance should have a tab 'process instance' instead of the generic 'process instance' menu item, but I'm not sure. Do I make sense? Talk non-sense? .....
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3996039#3996039
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3996039
17 years, 9 months
[Design of JBoss jBPM] - Re: Web Console: Context Menus and Navigation
by kukeltje
David,
Again, compliments for combining the search functionality in the table. I'm sure Gavin would like to have this in seam as well for other lists besides tasklists (I would). (There is a Jira issue for seam on this, if it could be made more generic... that would be great)
Some remarks still...
- The opening page is the user tasklist. That is (obivious) the most important one. I therefor would make it, the user part of the menu, the top one in the menu. (the username and logout are probably out of place then... hmmmmm)
- There is some inconsitency in the menu vs the title of the page (find processes in the menu vs start process in the page)
- Make the menu higlight the 'current/active' page
- I (personally) dislike 'jumping' screens and/or menus. The error reports should imo be in a place that does not make the screen jump.
I agree with James (and Jonathan) that some kind of grouping (like a tree table does) would be nice to have the tasks grouped by the first specified colum (i'd hide the id and have the 'view' either in the end or make the row itself clickable (with e.g. a tooltip which tells this to the user). You can then group by e.g. the process name, or the taskname (in which case this should (imo) not be tasks with the same name over processes with different names).
Ok, besides this (imo ;-) ) constructive critisism, some nitpicking. The grey is a little dark, shouldn't we use the grey from the jboss site? That is a little lighter.
And to James, did you see the latest jbpm search for tables... it's great... Now if only it would be shown as what it is in the exadel jsf editor... (ahhh well, I've got to have something to dream about, other then.......)
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3996034#3996034
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3996034
17 years, 9 months