gpt4 book ai didi

rhino-servicebus - rhino 服务总线入门

转载 作者:行者123 更新时间:2023-12-04 08:30:15 28 4
gpt4 key购买 nike

我已经阅读了很多示例/教程(包括 Ayende 在 MSDN 上的 Alexandria)。

但事实证明,仅仅获得一些更新的程序集本身就是一个障碍。获得正确版本的 CaSTLe.Windsor 后 - 它无法在 app.config 文件中找到正确的部分。 Rhino Service Bus 和 CaSTLeBootstrapper 的语法也发生了变化——我现在完全糊涂了。关于 Hibernating Rhinos 的“文档”真的没有帮助我入门。

任何人都可以帮助我使用带有 CaSTLe Windsor v. 3.0 (beta) 或 2.5.3 的 Rhino Service Bus 的工作示例,给我指点已经在线的东西,或者只是给我一个关于我的内容的分步指示需要启动并运行?

最佳答案

从 github (https://github.com/hibernating-rhinos/rhino-esb) 下载最新的 Rhino-ESB 位并构建它后,就可以非常简单地开始了。

我有一个 asp.net MVC 应用程序,它通过 Rhino-ESB 与后端通信。

在 asp.net MVC 方面:

在 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));
}

注意 YourCustomInstaller 必须实现 IWindsorInstaller 并且您在 Install 方法中向容器注册 Controller :

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

另请注意,WindsorControllerFactory 在内部将 Controller 创建委托(delegate)给容器:

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

最后但同样重要的是,在您的 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>

此配置假定后端在 localhost:31315 中运行队列,客户端在 localhost:31316 中运行其队列。

在后端:假设我们将它作为控制台应用程序运行,

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();

注意 YourBootstrapper 类实现了 CaSTLeBootstrapper

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

我们在其中为 OneOfYourMessages

注册消费者

关于rhino-servicebus - rhino 服务总线入门,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7346649/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com