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

标签 c# azure masstransit

我正在将 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/

相关文章:

c# - 如何覆盖 MassTransit 默认交换和队列拓扑约定?

c# - 如何向特定订阅者重新发送消息?

c# - 实现平衡二叉搜索树?

azure - Windows Azure DocumentDB 查询Where IN 语句

azure - 使用 Azure Active Directory 用户时,远程 WMI 查询失败并显示 'A security package specific error occurred'

c# - 在 MassTransit 上禁用循环消息消费

c# - IE9 正在复制母版页内容

c# - WinRT gridview 添加磁贴

c# - 使用前端 Controller 和 IIS 提供静态文件的方法?

java - azure 外部文件绝对路径