gpt4 book ai didi

c# - MassTransit 库向 azure 发送请求,但未进入队列

转载 作者:行者123 更新时间:2023-12-03 02:21:57 25 4
gpt4 key购买 nike

我正在将 MassTransit 与 Azure Bus 和 Autofact 结合使用,我正在本地主机上工作。

问题:我在应用程序中没有错误,问题是在 azure 中显示我在队列和总线中发送了“请求”(图像中的橙色线) ),但它们不会进入队列,而是留在请求中。我的 MassTransit 和 azure 总线配置中的所有内容都正确吗?我是不是忘记了什么或者做错了什么?

enter image description here

在 Azure 中,我的队列称为“live-schedule-update-consumer”,我的主题称为“contracts ~ Livescheduleupdatedata”,并且我订阅了“live-schedule-update-consumer”,但我没有任何内容仅将一条消息放入队列,这是我手动创建的。

我的公共(public)交通配置:

public static IContainer ConfigureContainer()
{
var builder = new ContainerBuilder();
builder.AddMassTransit(cfg =>
{
cfg.SetKebabCaseEndpointNameFormatter();

cfg.AddConsumer<TeamTimeManager>();

cfg.UsingAzureServiceBus((context, conf) =>
{
var settings = new HostSettings
{
ServiceUri = new Uri(AzureUrl),
TokenProvider = TokenProvider.CreateManagedIdentityTokenProvider()
};

conf.SubscriptionEndpoint<ILiveScheduleUpdateRequest>("Live-Schedule-Update-Consumer", e =>
{
e.ConfigureConsumer<TeamTimeManager>(context);
});

conf.ConfigureEndpoints(context);

conf.Host(settings);
});
});

return builder.Build();
}

当我发送到 Azure 时

var liveScheduleUpdateData = new LiveScheduleUpdateData();
liveScheduleUpdateData.job = job;
liveScheduleUpdateData.schedFound = schedFound;
liveScheduleUpdateData.punchType = punchType;
liveScheduleUpdateData.employee = employee;
liveScheduleUpdateData.request = request;
liveScheduleUpdateData.offset = offset;

var container = CreatorContainer.ConfigureContainer();
var bus = container.Resolve<IBusControl>();

bus.Publish<ILiveScheduleUpdateRequest>(liveScheduleUpdateData);

我的界面

public interface ILiveScheduleUpdateRequest
{
Job job { get; }
LiveSchedule schedFound { get; }
PunchAction punchType { get; }
User employee { get; }
PunchRequest request { get; }
double offset { get; }
}

我的类(class)

public class LiveScheduleUpdateData 
{
public Job job { get; set; }
public LiveSchedule schedFound { get; set; }
public PunchAction punchType { get; set; }
public User employee { get; set; }
public PunchRequest request { get; set; }
public double offset { get; set; }
}

最佳答案

您正在使用 SubscriptionEndpoint,它直接从主题消费,而不使用队列。如果您想从队列中消费,请使用 SubscriptionEndpoint() 删除 block ,ConfigureEndpoints 将创建主题、队列和订阅,以将消息从主题转发到队列。

关于c# - MassTransit 库向 azure 发送请求,但未进入队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68564751/

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