0

我有一个 Rebus 的 app.config 配置,它可以工作:

<configuration>
  <configSections>
    <section name="rebus" type="Rebus.Configuration.RebusConfigurationSection, Rebus" />
  </configSections>
  <rebus address="192.168.10.100" inputQueue="a.messages" errorQueue="a.error" workers="1" maxRetries="10">
    <endpoints>
      <add messages="ESB_Model" endpoint="a.messages@MyRemoteMachine" />
    </endpoints>
  </rebus>
</configuration>

现在我想在代码而不是配置文件中设置地址和端点:

_adapter = new BuiltinContainerAdapter();

        _bus = Configure.With(_adapter)
            .Logging(l => l.None())
            .Transport(t => t.UseMsmq("a.messages@MyRemoteMachine", "a.error"))
            .MessageOwnership(d => d.FromRebusConfigurationSection())
            .CreateBus()
            .Start();

这不被接受,我不确定如何设置 IP 地址。欢迎任何帮助!

4

1 回答 1

1

我可以看到您的代码存在一些问题,第一个问题是两种配置不等效。

第二种配置的问题是 Rebus 不允许您使用远程队列作为端点的输入队列。因此,在定义输入队列时不应使用@-语法。

此外,您似乎在混淆某些东西 -a.messages似乎是您的输入队列,但您似乎也想使用它(授予:在另一台机器上)作为来自ESB_Model. 这可能是正确的,但似乎你把它弄混了一点。

通常,每个端点都应该有自己唯一的输入队列,并且端点应该总是从本地队列接收它们的消息。而且您可能永远不应该让两个端点从同一个队列接收消息。

最后:除非您真的知道自己在做什么,否则请不要明确指定端点的 IP 地址 - Rebus 将自动使用输入队列和机器名称作为地址 - 例如,如果a.messages运行在其上的端点SomeMachine发送一个消息到另一个端点,返回地址将自动设置为a.messages@SomeMachine.

如果您想要更多灵感,可以查看示例:https ://github.com/mookid8000/Rebus/tree/master/samples/Rebus.Samples - pub/sub 示例有一些可以正常工作的简单配置并且不要过度指定。

希望这可以解决一点问题-如果您需要更多帮助,请告诉我:)

于 2013-08-07T14:40:47.080 回答