I derailed my last thread with issues about flat queues and other
stuff, so I wanted to start a new thread again now that I'm back to my
original issue -- I need to allow my system to scale by allowing
worker processes on remote machines to communicate with a central
system. I've put in a loadbalancer and have workers now connecting to
it and communicating (I think). But I'm still not getting remote
workers to actually receive messages.
I now have 3 players, the "requester" (a website), the loadbalancer,
and the "workers". My requester uses a oneway bus to send messages to
the loadbalancer, which I hope will then distribute them to the
workers. Here's how I've got them configured:
*Requester:
<facility id="requester.esb" >
<bus threadCount="1"
loadBalancerEndpoint="msmq://LOCALHOST/
videotoencode.loadbalancer"
numberOfRetries="5"
endpoint="msmq://LOCALHOST/videotoencode"
queueIsolationLevel="ReadCommitted"
/>
<messages>
<add name="Messages.VideoToEncode"
endpoint="msmq://LOCALHOST/videotoencode"
/>
</messages>
</facility>
*Loadbalancer:
<facility id="video.loadbalancer" >
<loadBalancer threadCount="1"
endpoint="msmq://LOCALHOST/videotoencode.loadbalancer"
UseFlatQueue="true"
/>
</facility>
*Worker:
<facility id="worker.esb" >
<bus threadCount="1"
loadBalancerEndpoint="msmq://REMOTEHOST/
videotoencode.loadbalancer"
numberOfRetries="5"
endpoint="msmq://LOCALHOST/videotoencode"
queueIsolationLevel="ReadCommitted"
transactional="false"
/>
<messages>
<add name="Messages.VideoToEncode"
endpoint="msmq://LOCALHOST/videotoencode"
/>
</messages>
</facility>
When I launch the worker, the loadbalancer sees it! Debug logs show
the following:
DEBUG Rhino.ServiceBus.Msmq.AbstractMsmqListener [(null)] Got message
Rhino.ServiceBus.Messages.ReadyToWork on
msmq://REMOTEHOST/videotoencode.loadbalancer
from FORMATNAME:DIRECT=OS:WW09\private$\videotoencode
DEBUG Rhino.ServiceBus.LoadBalancer.MsmqLoadBalancer [(null)]
msmq://MYWORKERMACHINE/videotoencode is ready to work
But once the requester sends a message to encode a new video, the
remote worker never gets it. If I run the worker process on the same
machine, changing the worker's loadbalancer endpoint to LOCALHOST, it
works fine.
I'm inching my way closer to getting this sorted. I hope I don't get
hit with another "You're doing it ALL wrong" moment, but please don't
hold back.
--
You received this message because you are subscribed to the Google Groups
"Rhino Tools Dev" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rhino-tools-dev?hl=en.