[Design of Messaging on JBoss (Messaging/JBoss)] - Re: JBMESSAGING-1457 - Unexistent destinations on both nodes
by clebert.suconic@jboss.com
Howard,
I'm not sure if the current fix is correct.
on
You should just ignore the Queue.. yes.. but on MessagingPostOfficeImpl::performFailover:
}
| else
| {
| //Cannot failover if there is no queue deployed.
|
| log.warn("Cannot failover " + queue.getName() + " since it does not exist on this node. " +
| "You must deploy your clustered destinations on ALL nodes of the cluster");
| }
|
I don't think deleteBindingFromStorage(queue) should be called. As merge didn't work because of the warning, we need to make sure the data will be received when the failed server starts.
//Delete from storage
|
| //Note we must do this *after* we have done any merge.
| //This is because if we did it first, then the merge failed, we'd be left with the old channel deleted
| //but the messages would have still be in the old channel
| //meaning they would have disappeared from the users point of view and it would involve manual
| //database intervention to correct it
| //See http://jira.jboss.com/jira/browse/JBMESSAGING-1113
|
| deleteBindingFromStorage(queue);
|
| log.debug(this + " deleted binding for " + queue.getName());
|
| // Note we do not need to send an unbind request across the cluster - this is because
| // when the node crashes a view change will hit the other nodes and that will cause
| // all binding data for that node to be removed anyway.
| }
|
So, you should improve one of the tests to validate the failed queue still have data when everything is restarted, and move the deletebindingFromStorage be called right after merge.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4200177#4200177
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4200177
17 years, 2 months
[Design of JBoss ESB] - Re: StartProcessInstanceCommand: Return token id/process ins
by Kevin.Conner@jboss.com
"camunda" wrote : Agreed. But in reality in your project, what do think the people do? Build a (complicated) correlation mechanism or hack an action which enables the SIgnalCommand again? ;-)
It is our intention to provide some support for this but, as always, there are other issues to be addressed.
"camunda" wrote : But you could have to process flows in parallel, both communicating with the ESB or maybe both flows even communicate with an external partner. Only the token id is unambiguous in this case. In the projects I know I always was fine with the token id.
But in this case the communication would initially be driven by the jBPM process and, as such, the correlation mechanism would again be relevant. You would still need to handle instances where the token had moved forward and/or looped and the token id is not sufficient for this.
"camunda" wrote : BTW: Where is the problem with a loop? That doesn't change anything with the token id. Only Fork/Join does...
It doesn't change the token id but it can change the request being made. As such any corresponding responses should be matched up.
quote="camunda"]Don't worry ;-)
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4200131#4200131
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4200131
17 years, 2 months
[Design of JBoss ESB] - Re: StartProcessInstanceCommand: Return token id/process ins
by camunda
Kevin wrote :
| It is the correlation functionality that is missing and not the signal command.
|
Agreed. But in reality in your project, what do think the people do? Build a (complicated) correlation mechanism or hack an action which enables the SIgnalCommand again? ;-)
BTW: In pre-ESB projects we often used the token-id only for correlation, in some circumstances this doesn't cause problems. This is a project based decision. But to have the expected state is definitely best practice, I agree.
Kevin wrote :
| camunda wrote :
| | I always work with the token id, because it is unambigous if multiple tokens exist for the ProcessInstance.
| |
| Except tokens come and go, loop etc.
|
But you could have to process flows in parallel, both communicating with the ESB or maybe both flows even communicate with an external partner. Only the token id is unambiguous in this case. In the projects I know I always was fine with the token id.
BTW: Where is the problem with a loop? That doesn't change anything with the token id. Only Fork/Join does...
Kevin wrote :
| Thanks very much for the feedback, keep it coming :)
|
Don't worry ;-)
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4200125#4200125
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4200125
17 years, 2 months
[Design of JBoss ESB] - Re: StartProcessInstanceCommand: Return token id/process ins
by Kevin.Conner@jboss.com
"camunda" wrote : But how to implement this if you think of the use case that an external client asks for the status of the process instance?
Sorry, I thought I had previously agreed that was a valid use case.
"camunda" wrote : You skipped the second question in that sentence ;-) Let's say you handed over the token id as correlation identifier to a third party application. It calls back, e.g. via JMS, containing only the token id. Now you have to signal the process instance with that token id, right
Sorry, I thought I had answered this. You cannot do this with just the token id as it is not sufficient for signalling. You need to have a different correlation mechanism with the external service and something has to manage that correlation.
"camunda" wrote : And currently this functionality is missing, so this is why I see the demand for the "old" SignalCommand.
It is the correlation functionality that is missing and not the signal command.
"camunda" wrote : By the way, an often requested use case is to update the version of the ProcessDefinition of a special ProcessInstance (e.g. to apply a fix). This is possible with a Command in jbpm, even if it is marked as experimental, since it can cause some problems. One problem with the currrent implementation is, that node-id has changed, so the EPR isn't working. I added a note in the ChangeProcessInstanceVersionCommand but think we can ignore that for know. If people use that command, they should know what they are doing...
This is not something we support with the current integration as there are many ways in which it can go wrong. As you say, it is experimental.
"camunda" wrote : I always work with the token id, because it is unambigous if multiple tokens exist for the ProcessInstance.
Except tokens come and go, loop etc.
"camunda" wrote : Basically I agree with it. I am not complaining about the solution as such, the problem is more the too complicated code and missing examples and the lack of an excellent tutorial for it. And some "details" are missing, like the correlation stuff. All of it "just" a matter of resources and time ;-)
I think we agree on all of these :)
Thanks very much for the feedback, keep it coming :)
Kev
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4200119#4200119
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4200119
17 years, 2 months
[Design of JBoss ESB] - Re: ServiceInvoker / deliver in new transaction
by camunda
Hi Mark,
I had a look into it again today. I have a problem of correlation now: After delivering asynchronously I have nothing, not even some ESB UUID. So how to wait for exactly this result message in a generic easy way?
The second problem: If I solve the correlation by some business identifier I still have to wait for the response of the service, but there is no way on the ServiceInvoker to do something like:
| serviceInvoker.waitForResponse(categoryName, serviceName, timeout)
| // or with correlation UUID
| serviceInvoker.waitForResponse(categoryName, serviceName, uuid, timeout)
| // or at least
| serviceInvoker.getResponseCourier(categoryName, serviceName)
| // or the like
|
Otherwise I cannot do that in a generic way because I need to subscribe to JMS for example (but then I have to know the special queue name and I am bound to JMS).
What do you think? Or am I on the wrong path?
Cheers & Thanks
Bernd
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4200113#4200113
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4200113
17 years, 2 months