【发布时间】:2018-02-26 23:12:06
【问题描述】:
我正在研究 Rebus 并将其与 Azure 服务总线一起使用。将它与 regalure Queues 一起使用很容易,但是当我想使用 Topic 时,我无法让它工作。
这里有没有完成设置并将其与主题/订阅一起使用。这是我目前所拥有的。
static void Main(string[] args)
{
_bus1 = InitializeBus(System.Environment.MachineName);
_bus2 = InitializeBus(System.Environment.MachineName + "_2");
_bus3 = InitializeBus();
Run();
Console.WriteLine("Press Enter to exit!");
Console.ReadLine();
}
private static void Run()
{
try
{
_bus1.Handle<string>((b, c, m) => { Console.WriteLine(m); return null; });
_bus2.Handle<string>((b, c, m) => { Console.WriteLine(m); return null; });
_bus1.Bus.Subscribe<string>();
_bus2.Bus.Subscribe<string>();
_bus3.Bus.Publish("Publish test message");
}
catch (Exception ex)
{
throw;
}
}
private static BuiltinHandlerActivator InitializeBus(string queueName = null)
{
var activator = new BuiltinHandlerActivator();
if(string.IsNullOrEmpty(queueName))
Configure.With(activator)
.Transport(t => t.UseAzureServiceBusAsOneWayClient(connectionString))
.Options(o => { o.SetNumberOfWorkers(10); o.SetMaxParallelism(10); })
.Start();
else
Configure.With(activator)
.Transport(t => t.UseAzureServiceBus(connectionString, queueName).EnablePartitioning().DoNotCreateQueues())
.Options(o => { o.SetNumberOfWorkers(10); o.SetMaxParallelism(10); })
.Start();
return activator;
}
首先,我创建所有总线。我正在使用 DontCreateQueues() 因为我不希望在我的根目录中创建重复的队列,但只能在作为订阅的主题下创建。 然后我设置了总线,发布工作正常,在这个主题下创建了一个主题和 2 个订阅,每个订阅中有 1 条消息。但是消息永远不会被收集。
如果我在配置中删除 DontCreateQueues() 方法,代码可以工作,但随后在根目录中创建了 2 个队列与主题,它是 2 个订阅,但我不能这样。
最好的问候 马格努斯
【问题讨论】:
标签: rebus