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.

Reply via email to