如何解决MassTransit 库向 azure 发送请求,但未进入队列
我正在将 MassTransit 与 Azure Bus 和 Autofact 一起使用,我正在我的本地主机上工作。
问题:我在应用程序中没有错误,问题是在 azure 中显示我在队列和总线中都发送了“请求”(图像中的橙色线) ),但他们不会进入队列,而是留在请求中。我的 MassTransit 和 azure 总线配置是否一切正常?我是忘记了什么还是做错了什么?
在 Azure 中,我的队列称为“live-schedule-update-consumer”,我的主题称为“contracts ~ live-scheduleupdatedata”,并且我订阅了“live-schedule-update-consumer”我没有任何内容仅将我手动创建的一条消息排队。
我的大众运输配置:
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; }
}
我的班
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()
的块,ConfigureEndpoints
将创建主题、队列和订阅以将消息从主题转发到队列。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。