标签: azure-storage-queues

如何向所有工作者角色实例发送消息?

我使用AzureQueue在角色之间进行通信.我的消息如"GoToMaintenanceMode","StopSendingEmails","DoNotAcceptRequests"等.但我意识到,当我有多个实例时,由于队列消息,它将无法用于我的场景,一次只显示1个实例.

所以我的问题是旁边的选项是否有一个优雅的方式来处理像Role.AllInstances.Run()等问题?

我正在使用它的方法: 实例查看消息,将它自己的实例id添加到消息中并将其放回队列,如果消息包含它自己的实例id,则不会查看消息.

PS我不想实现TCP侦听器,如果有的话请求原生解决方案.

azure azure-storage-queues

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

通过WebJobs重新排队或删除Azure存储队列中的邮件

我希望有人能澄清一些关于Azure存储队列及其与WebJobs交互的内容:

  1. 要执行重复的后台任务(即添加到队列一次,然后按设定的间隔重复),有没有办法更新QueueTrigger函数中提供的相同消息,以便可以扩展其租约(可见性)作为重新排队和避免的方式到期?

  2. 通过上面提到的重复后台作业模式,我也试图找出一种"按需"删除/过期作业的方法.因为在WebJobs的上下文之外似乎不可能这样做,所以我想可能将messageId和popReceipt存储在Table存储中作为持久缓存删除,然后在QueueTrigger函数中传递消息时执行DeleteMessage的表查找,以便不再重复该消息.

任何建议或提示表示赞赏.干杯:)

azure azure-table-storage azure-storage-queues azure-webjobs

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

Microsoft.WindowsAzure.Storage:找不到有效的帐户信息组合

我正在使用Azure Functions Preview并想要添加QueueTrigerFunction.

该函数定义如下:

[FunctionName("QueueTrigger")]        
public static void Run([QueueTrigger("testqueue1", Connection = "AzureWebJobsStorage")]string myQueueItem, TraceWriter log)
{
    log.Info($"C# Queue trigger function processed: {myQueueItem}");
}
Run Code Online (Sandbox Code Playgroud)

使用local.settings.json:

{
    "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=test1storage;AccountKey=XXXXX==;EndpointSuffix=core.windows.net/;",
    "AzureWebJobsDashboard": ""
  }
}
Run Code Online (Sandbox Code Playgroud)

当我启动VS调试器时,我收到以下错误消息:

[8/5/2017 1:07:56 AM] Microsoft.WindowsAzure.Storage:找不到有效的帐户信息组合.

我错过了什么?Azure中是否有一些其他设置需要检查以确保正确配置此方案?

azure azure-storage-queues azure-functions azure-functions-runtime

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

使用一个或多个标准FIFO队列实现延迟队列

延迟队列是一个队列,其中每个消息都有一个与之关联的延迟时间,并且只有在其延迟到期时才能获取消息.队列的头部是那个过去延迟到期的消息.如果没有延迟到期,则没有头,而dequeue将返回null.

实际上,我正在使用Azure编写云应用程序,而在Azure中,只有FIFO队列可用,而不是优先级/延迟队列.所以我来到这里看是否有人可以给我一些指示,从我可以从正确的方向开始.我google了很多,但只发现了Java中的延迟队列实现,而没有标准的教程/研究论文,一般性地谈论延迟队列.

编辑:

我有什么代码?
实际上,我必须首先设计这些东西并将它呈现给我的经理,一旦我们完成设计,那么只有我才能开始编码.

关于场景的更多细节
它是基于主/从模型的分布式应用程序.主服务器生成消息并将它们放入Azure Service Bus队列,并且有多个从服务器(在多台计算机上运行)从队列中读取并进行处理.如果主机发生故障,则其中一个从机充当主机并开始生成消息.我不想在主服务器中存储任何状态信息,因为如果主服务器关闭,所有状态信息也将随之而来.

c# algorithm queue azure azure-storage-queues

2
推荐指数
1
解决办法
2735
查看次数

我可以将 Azure 函数的单次运行中的多个项目排队吗?

我有一个 Node.js timerTriggerAzure 函数,它处理一个集合并将处理结果排队以供进一步处理(通过 Node.jsqueueTrigger函数)。

代码类似于以下内容:

module.exports = function (context, myTimer) {
    collection.forEach(function (item) {
        var items = [];

        // do some work and fill 'items'

        var toBeQueued = { items: items };

        context.bindings.myQueue = toBeQueued;
    });

    context.done();
};
Run Code Online (Sandbox Code Playgroud)

这段代码只会将最后toBeQueued一个排队,而不是我要排队的每一个。

有没有办法让多个项目排队?

更新

需要明确的是,我指的是toBeQueued在 的每次迭代中对a进行排队forEach,而不仅仅是对数组进行排队。是的,Azure Functions 存在一个问题,因此我无法对数组进行排队,但我有一个解决方法;即,{ items: items }

azure node.js azure-storage-queues azure-functions

2
推荐指数
1
解决办法
1975
查看次数

使用Azure存储节点SDK创建队列消息时,队列触发Azure功能会引发异常

我使用Azure存储节点SDK将消息添加到Azure存储队列.官方例子之后,我的代码如下:

const AzureStorage = require('azure-storage');
const queueService = AzureStorage.createQueueService();

queueService.createMessage('taskqueue', 'Hello world!', function (error) {
  if (!error) {
    // Message inserted
  }
});
Run Code Online (Sandbox Code Playgroud)

这会向taskqueue队列添加一条消息,从而触发使用Node构建的队列触发的Azure功能.当Azure函数收到消息时,它会引发以下异常:

Exception while executing function: Functions.Function2. 
Microsoft.Azure.WebJobs.Host: Exception binding parameter 'queuedMessage'. 
mscorlib: 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.
Run Code Online (Sandbox Code Playgroud)

azure node.js azure-storage-queues azure-functions

2
推荐指数
1
解决办法
334
查看次数

Azure队列 - 可见性超时 - 触发的WebJob

我喜欢在队列中消息到达时触发webjob的情况下更改Q消息不可见的时间跨度.

调试时我需要在dev-stage中使用它.有时由于错误而重新出现旧的Q-msg,但我已经清理了消息所引用的blob-storage-item.因此,WebJob崩溃,因为它试图获得不存在的blob-object.

如果我可以设置Q消息在1分钟后再次可见,那将是有帮助的.

public partial class函数{public static void ProcessBulkFileQ([QueueTrigger(AppConst.Q_BULKFILES)] JobInfo JobInfo,[Blob(AppConst.CONTAINER_BULKFILES +"/ {BlobName}",FileAccess.Read)] Stream InputStream,[Blob(AppConst.CONTAINER_BULKFILES + "/ {BlobName}")] CloudBlockBlob BlobToDelete){

azure azure-storage-queues azure-webjobs

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

Visual Studio部署队列触发器Azure功能

我目前正在编写这里编写的教程,用于创建和部署队列触发的azure函数.

在第2步的"创建函数"部分中,我不清楚我们应该为"连接"字符串添加什么.我假设它是您希望函数使用的存储帐户名称.

我遇到的另一个问题是,当我在本地系统上设置并测试Azure功能时,我将其部署到Azure,并且我没有选择要使用的当前存储帐户.

在此输入图像描述

我相信当我将函数发布到azure时,这会导致创建一个新的存储帐户.这非常令人沮丧,因为这意味着我必须使用具有丑陋GUID的存储帐户,并且还必须创建新的存储队列.我在某处错过了一步吗?

azure azure-storage azure-storage-queues azure-functions visual-studio-2017

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

Azure队列和功能:发送到队列的消息是否将处理相同的顺序

我正在使用QueueTrigger处理存储队列和函数,我还在host.json中放置了BatchSize = 1.我确定一次只能发送一条消息.我想知道发送给函数的消息是否按顺序到达队列.

我有4个数据发送到队列,它有一个时间戳.我看到其中一个没有到达我用作历史记录的azure表.没想到的那个应该被发送到队列我想.

后来我向队列发送了另一条消息,但是这条消息的处理比之前发送的消息要好

azure azure-storage-queues azure-functions

0
推荐指数
1
解决办法
227
查看次数

如何伪造/单元测试Azure存储队列?

我正在尝试找到一种方法来测试我拥有的一些代码,这些代码将查询天蓝色的存储队列。目前,我被要求创建自己的本地内存队列类来模拟上游 Azure 队列。此时,我试图看看是否可以在假队列中创建示例消息,以便我的类的被调用者有一些数据可以使用。

所以我正在尝试做这样的事情:

using Azure.Storage.Queues.Models;
namespace Widgets.Tests.Queues
{
    public class InMemoryAzureMessageQueue : IAzureQueueClient
    {
        public string DequeueMessage(QueueMessage message)
        {
            throw new System.NotImplementedException();
        }

        public QueueMessage[] GetMessages()
        {
           //pseudocode
           QueueMessage qm = new QueueMessage();
           QueueMessage[] listqm = new QueueMessage[];
           qm.messageID = xxx;
           qm.messageBody = "hello";

           listqm.add(qm);
           return listqm;

        }

        public bool HasMesssages()
        {
            return true; 
        }
    }
 }
Run Code Online (Sandbox Code Playgroud)

当我尝试创建“qm”时,收到以下错误消息:“QueueMessage”不包含采用 0 个参数的构造函数

到目前为止我尝试过的:

我尝试在单击 QueueMessage 时“转到定义”,只是为了查看构造函数的外观。但是当我这样做时,我收到一条错误消息,指出没有找到定义。

该类的描述是这样说的:

The object returned in the QueueMessageList array when calling Get Messages on a Queue. …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing azure azure-storage azure-storage-queues

0
推荐指数
1
解决办法
1932
查看次数