Question

J'ai lu beaucoup d'exemples / tutoriels (y compris. Alexandria de Ayende sur MSDN).

Mais se assemblées un peu mises à jour se sont révélés être un obstacle en soi. Après avoir obtenu la version correcte de Castle.Windsor - il ne peut pas trouver la bonne section dans le fichier app.config. La syntaxe dans les deux services Rhino Bus et CastleBootstrapper a aussi été modifié - et je suis maintenant totalement confus. La « documentation » sur Hibernation Rhinos est vraiment pas me aider à commencer.

Quelqu'un pourrait-il vous plaît me aider un échantillon de travail avec Rhino Service d'autobus soit avec le château de Windsor v. 3.0 (bêta) ou 2.5.3, le point moi à quelque chose déjà en ligne ou tout simplement me donner un pointeur étape par étape sur ce que je besoin de se lever et courir?

Était-ce utile?

La solution

après avoir téléchargé les derniers morceaux Rhino-ESB de GitHub (https://github.com/hibernating-rhinos/rhino-esb) et la construction, il est assez simple pour commencer.

J'ai une application asp.net MVC qui communique avec un back-end par Rhino-ESB.

Du côté asp.net MVC:

Sur Global.asax.cs:

private IWindsorContainer _container;

protected void Application_Start()
{
    _container = new WindsorContainer();
    new RhinoServiceBusConfiguration().UseCastleWindsor(_container).Configure();
    _container.Install(new YourCustomInstaller());
    //Don't forget to start the bus
    _container.Resolve<IStartableServiceBus>().Start();
    ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory(_container));
}

Notez que YourCustomInstaller doit mettre en œuvre IWindsorInstaller et vous enregistrer vos contrôleurs avec le conteneur dans le Installmethod:

public void Install(Castle.Windsor.IWindsorContainer container, Castle.MicroKernel.SubSystems.Configuration.IConfigurationStore store)
{
    container.Register(Component
       .For<HomeController>().LifeStyle.PerWebRequest.ImplementedBy<HomeController>());

Notez également que le WindsorControllerFactory interne délégués de la création du contrôleur au conteneur:

protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
    {
        if (controllerType == null)
            return null;
        return (IController)this.container.Resolve(controllerType);
    }

Last but not least, fournir la configuration de votre web.config

<configSections>
    <section name="rhino.esb" type="Rhino.ServiceBus.Config.BusConfigurationSection, Rhino.ServiceBus"/>
  </configSections>
  <rhino.esb>
    <bus threadCount="1"
         numberOfRetries="5"
         endpoint="rhino.queues://localhost:31316/Client"
         queueIsolationLevel="ReadCommitted"
         name="Client"/>
    <messages>
      <add name="YourMessagesNamespace"endpoint="rhino.queues://localhost:31315/Backend"/>
    </messages>
  </rhino.esb>

Cette configuration suppose que le back-end exécute une file d'attente dans localhost: 31315 et le client exécute sa file d'attente sur localhost: 31316.

Du côté de l'arrière-plan: à supposer que nous sommes en cours d'exécution, il comme une application de la console,

static void Main(string[] args)
        {
            IWindsorContainer container;
            container = new WindsorContainer();
            new RhinoServiceBusConfiguration()
                .UseCastleWindsor(container)
                .Configure();
            var host = new RemoteAppDomainHost(typeof(YourBootstrapper));
            host.Start();

            Console.WriteLine("Starting to process messages");
            Console.ReadLine();

Notez que YourBootstrapperclass outils CastleBootstrapper

public class YourBootstrapper: Rhino.ServiceBus.Castle.CastleBootStrapper
    {
        protected override void ConfigureContainer()
        {
            Container.Register(Component.For<OneOfYourMessages>());
        }
    }

dans lequel nous l'enregistrement d'un consommateur pour OneOfYourMessages

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top