首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有MassTransit 3前缀的AzureServiceBus将斜杠作为队列名称的前缀

带有MassTransit 3前缀的AzureServiceBus将斜杠作为队列名称的前缀
EN

Stack Overflow用户
提问于 2015-11-15 18:08:36
回答 1查看 926关注 0票数 1

当我试图使用MassTransit 3在Azure中运行我的应用程序时,我得到了以下错误

实体名称或路径不能包含“/”作为前缀或后缀。提供的值是'/profile.api‘。参数名称: entityName

唯一能看到前缀被添加到队列名称的方法是通过MassTransit。

奇怪的是,队列是在中以"profile.api“的名字创建的。

以前有没有其他人经历过这种情况?我不确定这是否是MassTransit的错误,或者我是否错过了配置的一个步骤。

下面是完整的堆栈跟踪。

谢谢。

ArgumentException:实体名称或路径不能将'/‘作为前缀或后缀。提供的值是'/profile.api‘。参数名称: entityName ( Microsoft.ServiceBus.Common.AsyncResult.End(IAsyncResult结果) +381 Microsoft.ServiceBus.Messaging.MessagingFactory.EndCreateMessageReceiver(IAsyncResult结果) +70 System.Threading.Tasks.TaskFactory1.FromAsyncCoreLogic(IAsyncResult iar, Func2 endFunction,Action1 endAction, Task1 promise,Boolean ) +86 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task任务) +99 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task任务) +58 MassTransit.AzureServiceBusTransport.Pipeline.-Send>d__7.MoveNext() +794 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() +26 MassTransit.AzureServiceBusTransport.Pipeline.-Send>d__7.MoveNext() +2756 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task任务) +99 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task任务) +58 MassTransit.AzureServiceBusTransport.Pipeline.d__5.MoveNext() +1599 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task任务) +99 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task任务) +58 MassTransit.AzureServiceBusTransport.d.MoveNext() +531 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task任务) +99 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task任务) +58 MassTransit.Internals.Extensions.d__1.MoveNext() +924 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58 MassTransit.<StartAsync>d__29.MoveNext() +1154 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() +26 MassTransit.<StartAsync>d__29.MoveNext() +2025 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58 MassTransit.Util.TaskUtil.Await(Func1 taskFactory,CancellationToken cancellationToken) +222 MassTransit.MassTransitBus.MassTransit.IBusControl.Start() +61 SampleApp.Startup.ConfigureBus() +33 SampleApp.Startup.Configuration(IAppBuilder应用) +428

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-16 14:01:15

结果发现,与MassTransit测试如何运行其蔚蓝配置相比,我的应用程序的配置方式有一个非常微妙的差别。

而我有(不工作)

代码语言:javascript
复制
public class AzureBusModule : Autofac.Module
{
    protected override void Load(ContainerBuilder builder)
    {
        builder.Register(context =>
        {
            var busControl = Bus.Factory.CreateUsingAzureServiceBus(sbc =>
            {
                var host = sbc.Host(new Uri("sb://" + ConfigurationManager.AppSettings["AzureEndPoint"]), h =>
                {
                    h.OperationTimeout = TimeSpan.FromSeconds(5);
                    h.TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(
                        ConfigurationManager.AppSettings["AzureKeyName"],
                        ConfigurationManager.AppSettings["AzureKeyValue"]);
                });

                sbc.UseSerilog();
                sbc.UseJsonSerializer();
                //sbc.UseRetry(Retry.Exponential(10.Seconds(), 3.Minutes(), 10.Seconds()));

                sbc.ReceiveEndpoint(host, ConfigurationManager.AppSettings["QueueName"], ep =>
                {
                    ep.LoadFrom(context);
                });

            });

            Log.Information("Finished Configuring MassTransit using Azure");

            return busControl;
        })
        .SingleInstance()
        .As<IBusControl>()
        .As<IBus>();
    }
}

更改以下修复了我的问题.

代码语言:javascript
复制
var serviceUri = ServiceBusEnvironment.CreateServiceUri("sb",
    ConfigurationManager.AppSettings["AzureEndpoint"],
    ConfigurationManager.AppSettings["AzureEndpointName"]);

var host = sbc.Host(serviceUri, h =>
{
    // [...]
}

我希望这对任何有类似问题的人都有帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33723112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档