gpt4 book ai didi

c# - 如何指定要与 MassTransit 一起使用的 Azure 服务总线主题

转载 作者:行者123 更新时间:2023-11-30 23:04:21 25 4
gpt4 key购买 nike

我尝试使用 MassTransit 将消息发布到 Azure 服务总线中名为 events 的主题。我在配置 MassTransit 以使用我的预定义主题 events 时遇到问题,而是创建了一个由消息类型的命名空间/类名命名的新主题。所以我想知道如何指定使用哪个主题而不是创建一个新主题。

这是我测试过的代码:

using System;
using System.Threading.Tasks;
using MassTransit;
using MassTransit.AzureServiceBusTransport;
using Microsoft.ServiceBus;

namespace PublisherNameSpace
{
public class Publisher
{
public static async Task PublishMessage()
{
var topic = "events";
var bus = Bus.Factory.CreateUsingAzureServiceBus(
cfg =>
{
var azureServiceBusHost = cfg.Host(new Uri("sb://<busname>.servicebus.windows.net"), host =>
{
host.OperationTimeout = TimeSpan.FromSeconds(5);
host.TokenProvider =
TokenProvider.CreateSharedAccessSignatureTokenProvider(
"RootManageSharedAccessKey",
"<key>"
);
});

cfg.ReceiveEndpoint(azureServiceBusHost, topic, e =>
{
e.Consumer<TestConsumer>();
});
});

await bus.Publish<TestConsumer>(new TestMessage { TestString = "testing" });
}
}

public class TestConsumer : IConsumer<TestMessage>
{
public Task Consume(ConsumeContext<TestMessage> context)
{
return Console.Out.WriteAsync("Consuming message");
}
}

public class TestMessage
{
public string TestString { get; set; }
}
}

最佳答案

接受的答案清除了订阅端:

cfg.SubscriptionEndpoint(
host,
"sub-1",
"my-topic-1",
e =>
{
e.ConfigureConsumer<TestConsumer>(provider);
});

对于那些想知道如何在发布端正确获取总线配置的人,它应该如下所示:

cfg.Message<TestMessage>(x =>
{
x.SetEntityName("my-topic-1");
});

然后您可以在总线上调用发布:

await bus.Publish<TestMessage>(message);

感谢@ChrisPatterson pointing this out to me !

关于c# - 如何指定要与 MassTransit 一起使用的 Azure 服务总线主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49434228/

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