Tag: azure

在Azure Service Bus中并行处理消息

问题:我发送了大量电子邮件,目前,在任何时间点,队列中平均有10封电子邮件。 我一次处理一个队列的代码; 也就是说,接收消息,处理它并最终发送电子邮件。 这会导致在用户注册服务时向用户发送电子邮件的延迟相当大。 我已经开始考虑修改代码来异步process the messages in parrallel 5。 我想要编写一个方法并使用CTP并行调用这个方法,比如5次。 我对如何实现这一点感到有点迷茫。 制造错误的成本非常高,因为如果出现问题,用户会感到失望。 Request:我需要帮助编写并行处理Azure服务总线中的消息的代码。 谢谢。 My code in a nutshell. Public .. Run() { _myQueueClient.BeginReceive(ProcessUrgentEmails, _myQueueClient); } void ProcessUrgentEmails(IAsyncResult result) { //casted the `result` as a QueueClient //Used EndReceive on an object of BrokeredMessage //I processed the message, then called sendEmail.BeginComplete(ProcessEndComplete, sendEmail); } //This method […]

在ASP.NET Core 2.0中从另一个(无用户交互)授权一个应用程序服务

我在面向Internet(PubWeb)的Azure中有一个Web API应用程序,因此它可以在任何地方使用。 我创建了一个Web API(再次,在Azure中,我们称之为InWeb)。 我想要强有力的安全规则: InWeb必须仅由PubWeb使用。 这可能涉及一些网络安全 – 这是一个简单的部分(在Azure中)。 PubWeb必须以某种方式由Azure AD授权才能使用InWeb服务。 我想到了服务负责人,证书等。 但我不确定。 那么2的最佳解决方案是什么? 更新 – 这里是InWeb Core 2.0 Auth设置: public void ConfigureServices(IServiceCollection services) { services.AddAuthentication(sharedOptions => { sharedOptions.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddAzureAdBearer(options => Configuration.Bind(“AzureAd”, options)); services.AddMvc(options => { options.InputFormatters.Add(new TextPlainInputFormatter()); }); }

Stackexchange.Redis超时和socketfailures

我使用Azure Redis(使用Stackexchange.Redis)作为缓存存储,它通常工作正常。 但是我偶尔会遇到超时错误,我无法确定它为什么会发生。 我的redis连接设置: value=”dev.redis.cache.windows.net,ssl=true,password=secret,abortConnect=false,syncTimeout=3000″ 我在同一秒(多次调用)中得到所有这些exception:[我在GET操作上也得到了这些。 几乎所有这些exception都在StringSet和StringGet上。 我很少在HashSets或HashGets上获得例外] Timeout performing SET {key}, inst: 1, mgr: ExecuteSelect, queue: 6, qu=0, qs=6, qc=0, wr=0/0, in=0/0 SocketFailure on SET SocketFailure on SET No connection is available to service this operation: SET 我猜测设置对象花费的时间比预期的要长,这可能是由于对象很大所以我可能会增加同步时间,但这会隐藏其他一些问题吗? 我只是在对stackexchange.redis的同步调用中得到这些exception,当调用异步时我没有看到exception。 堆栈跟踪: StackExchange.Redis.RedisConnectionException: SocketFailure on SET at StackExchange.Redis.ConnectionMultiplexer.ExecuteSyncImpl[T](Message message, ResultProcessor`1 processor, ServerEndPoint server) i at StackExchange.Redis.RedisBase.ExecuteSync[T](Message […]

如何使用System.Net.HttpListener在WebSocket中启用SSL

我在Windows Azure(工作者角色)上使用.Net 4.5和HttpListener类来创建自己的WebSocket服务器。 对于HTTP非安全连接,它可以很好地工作。 问题是我需要使用SSL(wss://)保护WebSocket连接。 我一直在寻找,HttpListener类文档和互联网(即使在这里)都没有帮助我。 我发现httpcfg.exe应该帮我配置证书,但没有幸运。 那么,这是我的问题: 有没有办法从我的代码中启用它? 喜欢从商店读取证书并以某种方式在HttpListener上设置它? 如果没有,httpcfg.exe是解决方案? 如果是的话,如何使用它? 如果1 ==否和2 ==是,我如何在Azure中使用httpcfg? 谢谢! 我非常感谢帮助…… 最好的祝福… Gutemberg

强制EventProcessorHost将失败的Azure Event Hub eventData重新传递给IEventProcessor.ProcessEvents方法

该应用程序使用.NET 4.6.1和Microsoft.Azure.ServiceBus.EventProcessorHost nuget包v2.0.2及其依赖WindowsAzure.ServiceBus包v3.0.1来处理Azure Event Hub消息。 该应用程序具有IEventProcessor的实现。 当从ProcessEventsAsync方法抛出未处理的exception时, EventProcessorHost永远不会将这些消息重新发送到正在运行的IEventProcessor实例。 (有趣的是,如果托管应用程序停止并重新启动,或者租约丢失并重新获得,它将重新发送。) 有没有办法强制导致exception的事件消息被EventProcessorHost重新发送到IEventProcessor实现? 本评论中提供了一个可能的解决方案,该问题几乎完全相同: IEventProcessor.ProcessEventsAsync中的Redeliver未处理的EventHub消息 评论建议在ProcessEventsAsync发生exception时,保留最后一个成功处理的事件消息的副本,并使用该消息显式检查点。 但是,在实现和测试此类解决方案后, EventProcessorHost仍然不会重新发送。 实现非常简单: private EventData _lastSuccessfulEvent; public async Task ProcessEventsAsync( PartitionContext context, IEnumerable messages) { try { await ProcessEvents(context, messages); // does actual processing, may throw exception _lastSuccessfulEvent = messages .OrderByDescending(ed => ed.SequenceNumber) .First(); } catch(Exception ex) { await context.CheckpointAsync(_lastSuccessfulEvent); } } […]

Windows Azure入门

我听起来像是一个完整的新手,但是这里…… 我刚刚注册了一个Windows Azure帐户,并希望在浏览器中获得一个简单的hello world aspx页面以查看它是如何工作的,但我似乎无法找到一个简单的指南来获得一个非常简单的Web应用程序运行。 我已经建立了一个“服务”并进入“部署”页面,但它要求我上传一个“应用程序包”。 我看过MSDN,但没有任何简单的指南,只是大量的文档谈论“角色”和“开发结构”。 对于精通HTML / CSS并且对asp.net有点了解的人来说,它也可能是另一种语言。 那么,有没有人知道如何上传一个简单的aspx页面,然后在浏览器中访问它? 乔恩

从DocumentDb中删除特定文档

以下代码检索具有特定jobId的所有CrawlResult文档。 var result = (from c in documentDb.CreateDocumentQuery(collection.SelfLink) where c.JobId == jobId select c); 现在我想删除具有此特定jobId的所有文档。 删除我发现的文件的唯一方法是: documentDb.DeleteDocumentAsync(string documentLink) 但是如何让documentLink执行documentDb.DeleteDocumentAsync() ?

多租户:每个租户的单个数据库

我们正在开发一个多租户应用程序。 在架构方面,我们为业务逻辑设计了共享中间层,为每个租户设计了一个数据持久性数据库。 如果说,业务层将与每个租户的数据库服务器建立连接集(连接池)。 这意味着应用程序为每个租户维护单独的连接池。 如果我们期望大约5000个租户,那么此解决方案需要高资源利用率(每个租户的应用服务器和数据库服务器之间的连接),这会导致性能问题。 我们通过保持公共连接池来解决这个问题。 为了在不同的数据库中维护单个连接池,我们创建了一个名为“App-master”的新数据库。 现在,我们始终首先连接到“App-master”数据库,然后将数据库更改为特定于租户的数据库。 这解决了我们的连接池问题。 此解决方案与内部部署数据库服务器完美配合。 但它不适用于Azure Sql,因为它不支持更改数据库。 提前感谢建议如何维护连接池或更好的方法/最佳实践来处理此类多租户方案。

如何使用Azure Table Storage的单个查询检索多种类型的实体?

我正在尝试了解Azure表存储如何工作以创建Facebook样式的源,我仍然坚持如何检索条目。 (我的问题几乎与https://stackoverflow.com/questions/6843689/retrieve-multiple-type-of-entities-from-azure-table-storage相同,但答案中的链接已被破坏。) 这是我的预期方法: 为我的应用程序中的所有用户创建个人订阅源,其中包含不同类型的条目(通知,状态更新等)。 我的想法是将它们存储在按每个用户的分区键分组的Azure表中。 检索同一分区键中的所有条目,并根据条目类型将其传递给不同的视图。 如何在保留其唯一属性的同时查询所有类型的相同基类型的表存储? CloudTableQuery需要一个类型化实体,如果我将EntryBase指定为generics参数,则不会获得特定于条目的属性( NotificationSpecificProperty , StatusUpdateSpecificProperty ),反之亦然。 我的实体: public class EntryBase : TableServiceEntity { public EntryBase() { } public EntryBase(string partitionKey, string rowKey) { this.PartitionKey = partitionKey; this.RowKey = rowKey; } } public class NotificationEntry : EntryBase { public string NotificationSpecificProperty { get; set; } } public class StatusUpdateEntry : […]

如何调用ffmpeg.exe来转换Windows Azure上的音频文件?

我在Windows Azure上运行Web角色以接收AAC音频文件(由base64字符串上传)并将它们存储到blob中。 它现在工作正常。 接下来,我还必须将它们转换为MP3并将MP3存储到blob中。 我决定使用像ffmpeg.exe -i path .aac path .mp3这样的东西。 问题在于: 如何在Web角色的Web服务中调用外部ffmpeg.exe ? 路径是什么? 如果你知道,请帮助我。 先感谢您。