我正在尝试使一对NSB终结点(事件发布者和事件订阅者)在Azure Service Bus之上运行。
我已经通过Azure门户创建了服务总线和主题,并且我的发布者能够将事件发布到该主题。这是该代码:
public static async Task Main()
{
var endpointConfiguration = new EndpointConfiguration(EndpointName);
endpointConfiguration.SendOnly();
var transport = endpointConfiguration.UseTransport<AzureServiceBusTransport>();
transport.ConnectionString(ServiceBusConnectionString);
transport.TopicName(TopicName);
var startableEndpoint = await Endpoint.Create(endpointConfiguration)
.ConfigureAwait(false);
var endpointInstance = await startableEndpoint.Start().ConfigureAwait(false);
var message = new MyMessage {Data = Guid.NewGuid().ToString()};
Console.WriteLine($"");
Console.WriteLine($"----------------");
Console.WriteLine($"Sending message ({message.Data})");
Console.WriteLine($"----------------");
Console.WriteLine($"");
await endpointInstance.Publish(message);
await endpointInstance.Stop().ConfigureAwait(false);
}
消息类位于共享程序集中:
namespace NsbAsbPoc.Messages
{
public class MyMessage : IEvent
{
public string Data { get; set; }
}
}
我无法为该消息设置订户。我尝试了以下方法:
public static async Task Main()
{
var endpointConfiguration = new EndpointConfiguration(EndpointName);
endpointConfiguration
.UseTransport<AzureServiceBusTransport>()
.ConnectionString(ServiceBusConnectionString)
.TopicName(TopicName);
endpointConfiguration.UsePersistence<InMemoryPersistence>();
var startableEndpoint =
await Endpoint.Create(endpointConfiguration).ConfigureAwait(false);
var endpointInstance = await startableEndpoint.Start().ConfigureAwait(false);
Console.ReadLine();
await endpointInstance.Stop().ConfigureAwait(false);
}
public class Handler : IHandleMessages<MyMessage>
{
public Task Handle(MyMessage message, IMessageHandlerContext context)
{
Console.WriteLine($"");
Console.WriteLine($"----------------");
Console.WriteLine($"Received message ({message.Data})");
Console.WriteLine($"----------------");
Console.WriteLine($"");
return Task.CompletedTask;
}
}
但是我在启动时遇到以下错误:
ERROR NServiceBus.Features.AutoSubscribe AutoSubscribe was unable
to subscribe to event 'NsbAsbPoc.Messages.MyMessage': The messaging entity
'xxxx:Topic:rich-test-topic|rich-test-vs-receiver-nsb|NsbAsbPoc.Messages.MyMessage'
could not be found. TrackingId:150fa682-205a-4dc1-a2fb-af6ddf8c1b4f_B2, SystemTracker:NoSystemTracker, Timestamp:2019-07-23T14:25:16
请注意,在以上消息中,我已编辑了总线实例的名称。还请注意,rich-test-topic
是我的主题的名称,rich-test-vs-receiver-nsb
是我的接收端点的名称。
由于这个新版本的NServiceBus.Transport.AzureServiceBus库似乎几乎没有文档,也几乎没有示例,因此我对如何继续完全陷入困境。我不知道在做什么我应该手动配置订阅吗?我应该让NSB自己创建主题吗?端点名称是否有任何重要意义?
答案 0 :(得分:1)