我正在将 MassTransit 与 Azure Bus 和 Autofact 结合使用,我正在本地主机上工作。
问题:我在应用程序中没有错误,问题是在 azure 中显示我在队列和总线中发送了“请求”(图像中的橙色线) ),但它们不会进入队列,而是留在请求中。我的 MassTransit 和 azure 总线配置中的所有内容都正确吗?我是不是忘记了什么或者做错了什么?
在 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/