标签: azure-storage-queues

如何从现实世界中的多个队列中读取?

这是一个理论问题:

当我使用消息队列构建应用程序时,我将需要多个队列支持不同的数据类型以用于不同的目的。假设我有 20 个队列(例如,一个用于创建新用户,一个用于处理新订单,一个用于编辑用户设置等)。

我将使用“最少”1 个 Web 角色和 1 个辅助角色将其部署到 Windows Azure。

如何以正确的方式从所有这 20 个队列中读取数据?这就是我的想法,但我对此几乎没有或没有现实世界的实践经验:

创建一个在辅助角色“main”类中产生 20 个线程的类。让这些线程中的每一个都执行一个方法来轮询不同的队列,并让所有这些线程在每次轮询之间休眠(当然还有增加休眠时间的回退机制)。

这导致有 20 个线程(或 21 个?)和 20 个正在主动轮询的队列,从而导致大量消息浪费(每次轮询空队列时,它都被计为消息)。

你怎么解决这个问题?

message-queue azure azure-storage-queues azure-servicebus-queues

3
推荐指数
1
解决办法
2834
查看次数

2015年Azure队列存储适当的呼叫模式?

以高效的方式写入Azure Queue Storage的正确调用/代码模式是什么?

现在,伪代码是

使用StorageCredentials和CloudStorage帐户属性创建静态类.在应用程序启动时,将配置文件中的值读入{get;} - 仅属性.

使用具有我的应用程序消息类型的输入参数的异步Task方法创建类.该方法序列化类型,创建新的CloudQueueMessage,新的CloudQueueClient,新的CloudQueue引用.在需要配置信息的地方,从静态类中读取.我的代码然后:

await Task.Run( ()=> theref.AddMessage(themessage).
Run Code Online (Sandbox Code Playgroud)

它看起来好像我在代码中有一些冗余,并且不确定是否/如何将连接汇集到队列中,以及我是否需要重试逻辑,就像我对数据库(SQL Server等)连接一样.

我试图了解哪些队列访问步骤可以以任何方式减少或优化.

所有想法都赞赏.

使用.NET 4.5.2,C#.代码正在Cloud Service(工作者角色)中执行.

谢谢.

azure azure-storage-blobs azure-storage-queues retrypolicy

3
推荐指数
1
解决办法
216
查看次数

如何使用Azure存储队列发送XML文件?

我需要在两台服务器之间发送xml文件.这些文件最多可达1mb.

我正在考虑使用Azure存储队列作为这些文件的中间目标,但请注意,邮件大小有64kb的限制.我认为发送超过64kb的消息的要求并不少见.

有没有办法绕过极限?压缩也许?

.net c# azure azure-queues azure-storage-queues

3
推荐指数
1
解决办法
518
查看次数

如何获取Azure存储队列大小/位置

所以我将一个项目从我的ASP.NET Web API发送到Azure存储队列,我想向用户提供关于他们的项目在队列中的位置的一些反馈,以及能够更新他们的位置项目,如果他们回来或类似的东西.

并不是说它与这里的问题有很大关系,但这是我用来将项目放在队列中的方法

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigHelper.GetAzureStorage());
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();

CloudQueue queue = queueClient.GetQueueReference("my-queue");
await queue.CreateIfNotExistsAsync();

var messageJson = JsonConvert.SerializeObject(item);
CloudQueueMessage cloudQueueMessage = new CloudQueueMessage(messageJson);

await queue.AddMessageAsync(cloudQueueMessage);
Run Code Online (Sandbox Code Playgroud)

所以我一直在探索CloudQueueClient,CloudQueue但我能找到的CloudQueue.ApproximateMessageCount总是返回null.

我还尝试了一些谷歌搜索如何总是出现入门指南,特别注意我如何获得项目的大小然后在队列中的位置,所以它甚至可能吗?

c# azure azure-storage azure-storage-queues

3
推荐指数
1
解决办法
1147
查看次数

Azure队列-功能-邮件可见性-工人?

我对有关Azure队列,函数和工作器的功能有一些疑问。我不确定这是如何工作的。

场景:

  • q通知是Azure存储帐户中的队列。
  • f-process-notification是Azure中绑定到q-notifications的功能。它的工作是获取队列中的第一条消息并进行处理。

理论上,当将消息添加到q通知时,应调用f-process-notification函数。

问题:

  1. 触发功能是否取代了需要工人的需求?换句话说,每当一条消息放入队列时,都会调用f-process-notification。

  2. 假设我在可见性超时为5分钟的队列中放置了一条消息。基本上,我正在对消息进行排队,但是直到5分钟后才应采取行动。队列是在将消息放入队列时立即触发f-process-notification还是仅在消息变为可见时(即,将消息放入队列后5分钟)才触发f-process-notification?

visibility azure-storage-queues azure-functions

3
推荐指数
1
解决办法
477
查看次数

存储队列触发的Azure功能是单个消息还是所有消息?

如果我创建一个由存储队列消息触发的Azure功能...系统是否会启动多个并行功能以从队列中获取每条消息,或者是否会调用一个函数来读取所有可用消息?

简而言之,排队的邮件是单独处理还是分批处理?

azure azure-storage-queues azure-functions

3
推荐指数
2
解决办法
2850
查看次数

Python Azure 队列,出现错误

我正在努力解决编码问题。我仍在尝试找出Python3的编码方案。我正在尝试将 json 对象从 Python 上传到 Azure 队列中。我正在使用Python3

我制作了 json 对象

response = {"UserImageId": 636667744866847370, "OutputImageName": "car-1807177_with_blue-2467336_size_1020_u38fa38.png"} 
queue_service.put_message(response_queue, json.dumps(response))
Run Code Online (Sandbox Code Playgroud)

当它到达队列时,我收到错误

{"imgResponse":"The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters. ","log":null,"$return":""}
Run Code Online (Sandbox Code Playgroud)

所以我必须做其他事情,因为显然我需要对我的字符串进行 Base64 编码。所以我尝试

queue_service.put_message(response_queue, base64.b64encode(json.dumps(response).encode('utf-8')))
Run Code Online (Sandbox Code Playgroud)

我得到

TypeError: message should be of type str
Run Code Online (Sandbox Code Playgroud)

来自 Azure 存储队列包。如果我检查上述语句的类型,它是字节类型(有意义)。所以我的问题是,如何将 json 对象编码为队列服务能够理解的内容。我真的希望能够保留 _ 和 - 和 。图像名称中的字符。

python base64 azure python-3.x azure-storage-queues

3
推荐指数
1
解决办法
2396
查看次数

连接到代理后面的 Azure 存储队列

我有一个 .NET Core 2.2 控制台应用程序可以连接到 Azure 存储队列。它在我的电脑上工作,但我无法让它在公司代理后面工作。我需要做什么?(我对存储帐户名称和密钥以及代理主机名进行了匿名处理。)

.csproj:

<Project Sdk="Microsoft.NET.Sdk">    
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <LangVersion>8.0</LangVersion>
    <NullableContextOptions>enable</NullableContextOptions>
    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
  </PropertyGroup>    
  <ItemGroup>
    <PackageReference Include="Microsoft.Azure.Management.Fluent" Version="1.21.0" />
    <PackageReference Include="Microsoft.Azure.Storage.Queue" Version="10.0.1" />
  </ItemGroup>    
</Project>
Run Code Online (Sandbox Code Playgroud)

包装类:

using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Queue;
using System.Threading.Tasks;

namespace Queue
{
    public class Queue
    {
        public Queue(string connectionString, string queueName)
        {
            var storageAccount = CloudStorageAccount.Parse(connectionString);            
            var cloudQueueClient = storageAccount.CreateCloudQueueClient();
            CloudQueue = cloudQueueClient.GetQueueReference(queueName);            
        }

        private CloudQueue CloudQueue { get; }

        public async Task<string> PeekAsync()
        {
            var m = await CloudQueue.PeekMessageAsync();            
            return m.AsString;
        }
    }
} …
Run Code Online (Sandbox Code Playgroud)

c# azure http-proxy azure-storage-queues .net-core

3
推荐指数
1
解决办法
1551
查看次数

队列触发函数内部如何获取队列messageid

我正在尝试获取 Azure Web 作业队列中当前处理消息的消息 ID。找不到任何有关如何获取它的正确文档。

public static void ProcessQueueMessage([QueueTrigger("%testingQueue%")] TestingMessageModel testMessage, TextWriter log)
{
   // want to do some logging for this particular triggered message using the messageid. How to get that?
}
Run Code Online (Sandbox Code Playgroud)

添加TestingMessageModel作为参考,它没有任何指导。我想使用 azure 在将消息放入队列时创建的 GUID。

public class TestingMessageModel
{
  public int FromOrg {get; set;}
  public DateTime BatchDate {get; set;}
  public Payments[] payments {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

c# azure-storage-queues azure-webjobs queuetrigger

3
推荐指数
1
解决办法
2399
查看次数

Azure 存储队列与 Azure 服务总线的有害消息和 DLQ

Azure 队列存储和 Azure 服务在死信队列和有害消息方面有什么区别?

我如何从这些队列中读取消息?

c# azure azureservicebus azure-storage-queues

3
推荐指数
1
解决办法
2337
查看次数