标签: azureservicebus

在Azure上的BasicHttpRelayBinding上公开WSDL

我有一个使用AppFabric自动启动的svc.我想要做的是通过总线公开我的服务的wsdl.在内部服务和wsdl工作正常,我也可以通过总线消费服务没有问题.我唯一无法正确配置的是在继电器上查看wsdl.

ServiceHostFactory创建默认端点,也增加了Azure的端点,希望一个MEX终结一起暴露在继电器的WSDL.当我尝试从服务总线URL查看wsdl时,我得到了不匹配的错误,可能是由于ACS身份验证失败了?

...cannot be processed at the receiver, due to an AddressFilter mismatch at the EndpointDispatcher. Check that the sender and receiver's EndpointAddresses agree
Run Code Online (Sandbox Code Playgroud)

我是否需要将mex端点设置为匿名身份验证,以便我可以访问浏览器并查看wsdl?只是不确定还有什么可以尝试...任何帮助将不胜感激!

示例网址:

http://myservicebusexample.servicebus.windows.net/MyService/AService.svc?wsdl

要么

http://myservicebusexample.servicebus.windows.net/MyService/AService.svc/mex

<serviceBehaviors>
   <behavior>
      <serviceMetadata httpGetEnabled="true" />
   </behavior>
</serviceBehaviors>
Run Code Online (Sandbox Code Playgroud)

所以这是我的 ServiceHostFactory

// Create host with default endpoints
ServiceHost host = new ServiceHost(serviceType, baseAddresses);
host.AddDefaultEndpoints();

// Create Relay Endpoint for Azure
ServiceEndpoint relayEndpoint = host.AddServiceEndpoint(typeof(IMyContract), new BasicHttpRelayBinding("MyAzureBindingConfiguration"), relayAddress);

// Apply ACS Credentials for the relay endpoint
relayEndpoint.ApplyEndpointBehaviorConfig("MyAzureACSCredentials");

// Create mex …
Run Code Online (Sandbox Code Playgroud)

wsdl azure azureservicebus basichttprelaybinding

5
推荐指数
1
解决办法
1011
查看次数

在ServiceBus上发送大邮件的最佳做法

我们需要在ServiceBus主题上发送大量消息.目前的大小约为10MB.我们最初的做法是在BlobStorage中保存一个临时文件,然后发送一个参考blob的消息.压缩文件以节省上传时间.它工作正常.

今天我读了这篇文章:http://geekswithblogs.net/asmith/archive/2012/04/10/149275.aspx 建议将消息​​分成较小的块,然后在接收端再次聚合它们.

我可以承认这是一种"更清洁的方法",避免了往返BlobStore的往返.另一方面,我更喜欢保持简单.分裂机制引入了更高的复杂性.我的意思是他们从一开始就没有把它包括在ServiceBus中的原因一定是这样的...

有没有人尝试过现实生活中的分裂方法?

有更好的模式吗?

size message azureservicebus

5
推荐指数
1
解决办法
3567
查看次数

每个Web服务器的Azure Service Bus主题订阅

我正在努力将SignalR体验集成到Azure基础架构中.

基本上,用户会在网站上采取一些操作,触发Web服务器上的函数调用(通过SignalR).处理该请求可能需要一些时间,用户可以通过单击发送数十个或数百个请求.我正在创建一个Service Bus队列来将这些任务发送给WebJob/Worker来处理它们,一旦它们准备好,它们就会将它发送回另一个队列(响应队列).

也就是说,为了提供令人敬畏的用户体验,如果用户仍然处于与以前相同的页面上,并且如果处理已准备好,我希望它在这些任务完成时实时更新它们.如果用户固定在一个前端盒子上(由于SignalR WebSocket连接),这应该是微不足道的,但事实并非如此,因此不同的前端可能需要处理该响应消息并通过SignalR调用浏览器.

当我在第一个队列中发布消息时,我将包括SignalR ConnectionId.响应完成后,ConnectionId包含在响应消息中,这使我有机会进行呼叫.

HubContext.Clients.Client(connectionId).AddItemsResult(response);
Run Code Online (Sandbox Code Playgroud)

我的问题是关于服务总线主题 - 或另一种我不完全理解的解决方案.我需要通知每个WebServer处理每个响应,因为我无法确定哪个Web服务器实际上会将SignalR调用到客户端.

1)服务总线主题是正确的方法吗?

2)我需要动态地创建N个订阅(每个Web服务器一个),这似乎很奇怪.如果服务器死了又永远不会回来会怎么样?我有一个订阅,不再有订阅者?

基本上,我只是想创建一个简单的发布者 - 订阅者模式,我可以在他们上线时拥有N个动态订阅者(听众).

asp.net azure signalr azureservicebus

5
推荐指数
1
解决办法
191
查看次数

高吞吐量发送到EventHubs导致MessagingException/TimeoutException/Server无法处理请求错误

我们遇到了很多这些异常,在高峰流量期间向EventHubs发送事件:

"无法将事件发送到EventHub.例外:Microsoft.ServiceBus.Messaging.MessagingException:服务器无法处理请求;请重试该操作.如果问题仍然存在,请联系您的Service Bus管理员并提供跟踪ID." 或"无法将事件发送到EventHub.例外:System.TimeoutException:操作未在分配的时间内完成"

你可以在这里清楚地看到它:

Azure Portal EH

正如您所看到的,当传入的消息超过400K事件/小时(或~270 MB /小时)时,我们得到了许多内部错误,服务器忙错误,失败请求.这不仅仅是一个短暂的问题.这显然与吞吐量有关.

我们的EH有32个分区,7天的消息保留和5个吞吐量单位.OperationTimeout设置为5分钟,我们使用默认的RetryPolicy.

我们还需要在这里调整一下吗?我们真的很关心EH的可扩展性.

谢谢

azure azureservicebus azure-eventhub

5
推荐指数
1
解决办法
2327
查看次数

没有“管理”权限策略的情况下,是否可以将MassTransit 3与Azure Service Bus一起使用?

我花了几天时间测试MassTransit 3.1.2,以查看是否可以在应用程序中将它与Azure Service Bus一起使用。

我使用MassTransit.AzureServiceBus(3.1.2)通过两个控制台应用程序制作了一个示例:一个发布者和一个订阅者。

它运作良好。当我启动应用程序时,实体(队列,主题,订阅)将自动在Azure上的命名空间上创建。
当您测试事物但在生产中时,这很好,我不希望该应用程序被允许创建实体。我们想预先创建它们。

为此,我认为使用仅具有“发送”“监听”权限的SAS策略连接到总线是一个好主意(在使用具有“管理”权限的名称空间策略之前)。

现在,我在这一点上苦苦挣扎,无法正常工作,总是遇到401错误如果我不使用具有“管理”权限的策略,则必须对此操作要求管理声明
我尝试直接在名称空间或实体上设置策略,但没有成功。

之后,我分析了堆栈跟踪异常(用[...]省略了无用的部分):

System.UnauthorizedAccessException: Le serveur distant a retourné une erreur : (401) Non autorisé. Manage claim is required for this operation. TrackingId:2ca420e3-aac6-467c-bacb-6e051dbc3e39_G47,TimeStamp:1/29/2016 11:20:41 PM ---> System.Net.WebException: Le serveur distant a retourné une erreur : (401) Non autorisé.
   à System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
   à Microsoft.ServiceBus.Messaging.ServiceBusResourceOperations.GetAsyncResult`1.<GetAsyncSteps>b__3c(GetAsyncResult`1 thisPtr, IAsyncResult r)
   à Microsoft.ServiceBus.Messaging.IteratorAsyncResult`1.StepCallback(IAsyncResult result)
   --- Fin de la trace de la pile d'exception interne --- …
Run Code Online (Sandbox Code Playgroud)

c# masstransit azure azureservicebus

5
推荐指数
1
解决办法
616
查看次数

Azure服务总线读取性能

我正在尝试使用Azure Service Bus提高Windows服务的吞吐量.我注意到的是,如果我有像这样的代码.

 client.OnMessageAsync(async message =>
            {
                var timer = new Stopwatch();
                timer.Start();
                bool shouldAbandon = false;
                try
                {
                    // asynchronouse processing of messages
                    await messageProcessor.ProcessAsync(message);
                    Interlocked.Increment(ref SimpleCounter);
                    // complete if successful processing
                    await message.CompleteAsync();
                }
                catch (Exception ex)
                {
                    shouldAbandon = true;
                    Console.WriteLine(ex);
                }

                if (shouldAbandon)
                {
                    await message.AbandonAsync();
                }
                timer.Stop();
                messageTimes.Add(timer.ElapsedMilliseconds);
            },
           options);
Run Code Online (Sandbox Code Playgroud)

选项在哪里

OnMessageOptions options = new OnMessageOptions
            {
                MaxConcurrentCalls = maxConcurrent,
                AutoComplete = false
            };
Run Code Online (Sandbox Code Playgroud)

增加MaxConcurrentCalls在一定数量之后几乎没有影响(12-16通常用于我正在做的事情).

但是,使用相同的MaxConcurrentCalls创建多个客户端(QueueClient)确实可以提高性能(几乎是线性的).

所以我一直在做的是使#queueclient和maxconcurrentcalls可配置,但我想知道是否有多个队列客户端是最好的方法.

所以我的问题是:是否有多个队列客户端的消息泵为Windows服务和天蓝色服务总线运行不良或良好的做法?

c# azure azureservicebus

5
推荐指数
1
解决办法
501
查看次数

什么运行模式应该用于ServiceBus触发的WebJob?

我有一个WebJob,只要ServiceBus队列项出现就会被触发

public static void ProcessQueueMessage(
    [ServiceBusTrigger("%ServiceBusHighPriorityQueueName%")] BrokeredMessage message)
Run Code Online (Sandbox Code Playgroud)

一些网站声明如下

  • 连续:将始终运行的WebJob
  • 触发:在进行API调用时按需运行的WebJob,或在达到预定条件时运行的WebJob.

我假设ServiceBus队列触发器处理程序是"触发"而不是"连续",那么在设置webjob-publish-settings.json参数runMode时应该使用什么?

由于它被触发,AppService仍然需要是AlwaysOn吗?

c# azure azureservicebus azure-webjobs

5
推荐指数
1
解决办法
286
查看次数

如何使用自定义INameResolver配置由Service Bus触发的Azure功能?

我希望能够控制Azure功能在运行时读取的服务总线队列或订阅的名称.

使用WebJobs(Azure Functions基于),您可以通过实现和配置自定义来执行此操作INameResolver,请参阅:如何为Web作业处理创建基于配置的队列名称?

但是,使用Azure功能,我无权连接JobHostConfiguration此自定义解析程序.

我还可以使用INameResolver,如果是这样的话怎么样?

azure azureservicebus azure-functions azure-functions-runtime

5
推荐指数
1
解决办法
547
查看次数

Azure Service Bus主题多个订阅者

我是Azure Service Bus的新手,想知道我是否可以将多个订阅者添加到队列或主题中?在Rabbit MQ中,我可以拥有1个发布者的多个订阅者.

我想要做的是,我正在使用CQRS,当某些命令在处理事件时进入系统时,我想将它们推入消息队列.

我希望2个订阅者能够从该队列中获取消息,其中一个用于我内部处理.另一个用于处理并向外发送.

c# azure azureservicebus

5
推荐指数
1
解决办法
4255
查看次数

代理连接如何计算?

正在查看Azure Service Bus来替换一些不可靠的RabbitMQ服务器,而价格方面尚不清楚的一件事是,出于计费目的,它们究竟算作“代理连接”是什么?

我们有大约12台计算机正在处理超过1000个队列中的消息(其中一台计算机正在填充队列),那么在1台计算机上运行的1个应用程序是否被视为一个代理连接(无论它正在侦听多少个队列)?或将每台机器算作1,000+撮合连接(这可能加起来非常快)?

假设我做了这样的事情:

var queues = queueNames.Select(q =>
{
    if (!manager.QueueExists(q))
    {
        manager.CreateQueue(q);
    }
    return new QueueClient(ServiceBusConnectionString, q);
}).ToArray();
Run Code Online (Sandbox Code Playgroud)

Add queueNames是一个由10个字符串组成的数组。那是10个代理连接吗?1个 或者是其他东西?

azure azureservicebus

5
推荐指数
1
解决办法
1728
查看次数