light bulb... So I have 1 guy that owns a particular message. other guys are going to send those messages to him.
?Rule: If you are not the message owner you should not call publish or notify on the message? What I was doing was in my web app, user clicks submit order and then the controller would Notify(OrderSubmitted) and then there might be any number of handlers that would deal with the submitted order. I was using notify because I thought that the correct way to express that there could be N handlers for the particular message. But what I should be doing is in my controller doing a Send(OrderSubmitted) and then have my consumer for that publish a different message? On Jan 19, 5:56 pm, Ayende Rahien <[email protected]> wrote: > It is the guy who is responsible for publishing the message, and the guy who > gets the message when you send it. > Did you start the service? > Did you register your message consumers in the container? > > On Mon, Jan 19, 2009 at 5:27 PM, chrisortman <[email protected]> wrote: > > > Is the message owner the guy handling the message or the guy sending > > the message? > > > In my scenario they are really the same I think... > > > In my facilities.config > > <facility id="rhino.esb" > > > <bus threadCount="1" > > numberOfRetries="5" > > > logEndpoint="msmq://localhost/myapp.log" > > endpoint="msmq://localhost/myapp.backend" > > /> > > <messages> > > <add name="MyApp.Messages" > > endpoint="msmq://localhost/myapp.backend"/> > > </messages> > > </facility> > > > Then I have this message class > > namespace MyApp.Messages { > > public class SimpleMessage { > > public string Content {get;set;} > > } > > } > > > I then have a MR controller > > public class MyController { > > > public void Submit(string content) { > > var bus = IoC.Resolve<IServiceBus>(); > > var message = new SimpleMessage(content); > > bus.Notify(message); //nothing to do because there are no > > subscribers > > } > > } > > > Now, I had been planning on _not_ setting up a separate service to > > handle messages and instead just have everything live in my web > > application. Is that really really bad or just bad? Maybe that is why > > I am so confused? > > > On Jan 19, 4:09 pm, Ayende Rahien <[email protected]> wrote: > > > a) usually... yes. b) no, you don't. > > > You need to register this in the message owner's configuration. > > > > <castle> > > > > <facilities> > > > > <facility id="rhino.esb" > > > > > <bus threadCount="1" > > > > numberOfRetries="5" > > > > endpoint="msmq://localhost/nhprof.backend" > > > > /> > > > > <messages> > > > > <add name="NHProfilerWeb.Backend.InternalMessages" > > > > endpoint="msmq://localhost/nhprof.backend"/> > > > > <add name="NHProfilerWeb.Messages" > > > > endpoint="msmq://localhost/nhprof.backend"/> > > > > </messages> > > > > </facility> > > > > </facilities> > > > > On Mon, Jan 19, 2009 at 4:43 PM, chrisortman <[email protected]> > > wrote: > > > > > Sorry, I don't think I understand... > > > > > a) Are you saying that there will always be other endpoints? > > > > > b) > > > > I need to define in my application something like this? > > > > public class Something : ConsumerOf<AdministrativeMessage> { > > > > public void Consume(AdministrativeMessage m) { > > > > //nothing to do here > > > > } > > > > } > > > > > On Jan 19, 3:20 pm, Ayende Rahien <[email protected]> wrote: > > > > > a) you assume that there are other end points.b) make sure that you > > have > > > > > message owners defined for the bus' messages, that will handle the > > > > > subscriptions. > > > > > > On Mon, Jan 19, 2009 at 4:03 PM, chrisortman <[email protected]> > > > > wrote: > > > > > > > I think why I am getting confused is that whatever bus i use to > > Send| > > > > > > Notify|Publish should be an implicit subscriber since it can > > consume > > > > > > its own messages. Otherwise I can't see why to use Notify|Publish > > if > > > > > > there are no other endpoints. > > > > > > > On Jan 19, 2:05 pm, Ayende Rahien <[email protected]> wrote: > > > > > > > No, because discarded messages are for _arriving_ messages. > > > > > > > > On Mon, Jan 19, 2009 at 2:43 PM, chrisortman < > > [email protected]> > > > > > > wrote: > > > > > > > > > Currently when doing IServiceBus.Notify(message) nothing > > happens if > > > > > > > > there are no subscribers. > > > > > > > > Should this also generate a discarded message? > > > > > > > > > On Jan 19, 11:04 am, Ayende Rahien <[email protected]> wrote: > > > > > > > > > That is an extremely common approach. > > > > > > > > > For that matter, here is the real configuration behind the NH > > > > Prof > > > > > > > > website: > > > > > > > > > > <castle> > > > > > > > > > > <facilities> > > > > > > > > > > <facility id="rhino.esb" > > > > > > > > > > > <bus threadCount="1" > > > > > > > > > > numberOfRetries="5" > > > > > > > > > > endpoint="msmq://localhost/nhprof.backend" > > > > > > > > > > /> > > > > > > > > > > <messages> > > > > > > > > > > <add name="NHProfilerWeb.Backend.InternalMessages" > > > > > > > > > > endpoint="msmq://localhost/nhprof.backend"/> > > > > > > > > > > <add name="NHProfilerWeb.Messages" > > > > > > > > > > endpoint="msmq://localhost/nhprof.backend"/> > > > > > > > > > > </messages> > > > > > > > > > > </facility> > > > > > > > > > > </facilities> > > > > > > > > > > On Mon, Jan 19, 2009 at 12:00 PM, chrisortman < > > > > [email protected] > > > > > > > > > wrote: > > > > > > > > > > > Does it violate anything if the same bus that sends the > > message > > > > is > > > > > > > > > > also the one that is watching that queue? > > > > > > > > > > > Lets say I have 2 apps. > > > > > > > > > > 1 NHProf website > > > > > > > > > > 2 Windows Service that does order processing > > > > > > > > > > > So in the web app I would do something like > > > > > > > > > > <facility id="rhino.esb" > > > > > > > > > > > <bus threadCount="1" > > > > > > > > > > numberOfRetries="5" > > > > > > > > > > endpoint="msmq://localhost/nhprof.web" > > > > > > > > > > /> > > > > > > > > > > <messages> > > > > > > > > > > <add name="nhprof" > > > > > > > > > > endpoint="msmq://localhost/nhprof.orders"/> > > > > > > > > > > </messages> > > > > > > > > > > </facility> > > > > > > > > > > > And then the service app: > > > > > > > > > > <facility id="rhino.esb" > > > > > > > > > > > <bus threadCount="1" > > > > > > > > > > numberOfRetries="5" > > > > > > > > > > endpoint="msmq://localhost/nhprof.svc" > > > > > > > > > > /> > > > > > > > > > > <messages> > > > > > > > > > > <add name="nhprof" > > > > > > > > > > endpoint="msmq://localhost/nhprof.orders"/> > > > > > > > > > > </messages> > > > > > > > > > > </facility> > > > > > > > > > > On Jan 19, 10:53 am, Ayende Rahien <[email protected]> > > wrote: > > > > > > > > > > > No, there is an assumption that that queue exists. > > > > > > > > > > > > On Mon, Jan 19, 2009 at 11:50 AM, chrisortman < > > > > > > [email protected] > > > > > > > > > > > wrote: > > > > > > > > > > > > > Is there an assumption then that there exists a bus > > that is > > > > > > > > watching > > > > > > > > > > > > that endpoint? > > > > > > > > > > > > > On Jan 19, 10:27 am, Ayende Rahien <[email protected]> > > > > wrote: > > > > > > > > > > > > > inline > > > > > > > > > > > > > > On Mon, Jan 19, 2009 at 10:43 AM, chrisortman < > > > > > > > > [email protected] > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > Is it correct to say that a Discarded message is > > any > > > > > > message > > > > > > > > that > > > > > > > > > > > > > > arrives at an endpoint but has no consumers > > registered > > > > for > > > > > > it? > > > > > > > > > > > > > > yes > > > > > > > > > > > > > another option is that this is a saga message that > > > > doesn't > > > > > > have a > > > > > > > > > > saga > > > > > > > > > > > > > instance to orchestrate it. > > > > > > > > > > > > > > > I am also not understanding why messages have their > > own > > > > > > > > endpoint or > > > > > > > > > > > > > > when they should share the same endpoint as the > > bus? > > > > > > > > > > > > > > > I am running the trunk right now, and when I use > > this > > > > as my > > > > > > > > config > > > > > > > > > > > > > > <facility id="rhino.esb" > > > > > > > > > > > > > > > <bus threadCount="1" > > > > > > > > > > > > > > numberOfRetries="5" > > > > > > > > > > > > > > > logEndpoint="msmq://localhost/my.log" > > > > > > > > > > > > > > endpoint="msmq://localhost/rhino" > > > > > > > > > > > > > > /> > > > > > > > > > > > > > > <messages> > > > > > > > > > > > > > > <add > > > > > > name="MyMessageAssembly" > > > > > endpoint="msmq://localhost/my.subscriptions"/> > > > > > > > > > > > > > > </messages> > > > > > > > > > > > > > > </facility> > > > > > > > > > > > > > > > I get errors because the my.subscriptions queue > > doesn't > > > > > > exist. > > > > > > > > > > > > > > The problem that you have is that you are trying to > > send > > > > the > > > > > > > > message > > > > > > > > > > to a > > > > > > > > > > > > > non existing bus. > > > > > > > > > > > > > > The reason that you have to specify an endpoint > > several > > > > times > > > > > > is > > > > > > > > that > > > > > > > > > > the > > > > > > > > > > > > > bus' endpoint says what queue the bus listen on. > > > > > > > > > > > > > The message endpoint specify what is the owner of a > > > > > > particular > > > > > > > > set of > > > > > > > > > > > > > messages. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
