gpt4 book ai didi

azure - 从 PowerShell 并行发送消息到 Azure 存储队列

转载 作者:行者123 更新时间:2023-12-02 23:53:13 25 4
gpt4 key购买 nike

如何并行向队列发送消息?

我尝试过这个:

$queue = Get-AzureStorageQueue -Name 'itemsqueue' -Context $context
1..100 | % {
$msgContent = "This is message $_"

Start-Job {
$queue.CloudQueue.AddMessage($msgContent)
}
}

Get-Job | Receive-Job

但是 $queue 为空。我也尝试将它作为 param($queue) 传递,但也不起作用。

有什么想法不需要在每个作业中执行 Get-AzureStorageQueue 吗?

谢谢!

最佳答案

后台作业构建在 PowerShell 远程处理之上,因此在传递对象时执行类似的操作。

他们会序列化/反序列化它们,而不是传递它们的复杂性,这意味着即使您使用 start-job 的 -ArgumentList 参数,$queue 也会反序列化为字符串类型(或其他)没有 AddMessage() 方法。

这是使用 BeginInvoke 的解决方法,它与作业执行相同的操作:

  $context=New-AzureStorageContext -StorageAccountName your_account -StorageAccountKey your_key
$queue = Get-AzureStorageQueue -Name 'myqueue0905' -Context $context

1..10 | % {

$m1 = New-Object -TypeName Microsoft.WindowsAzure.Storage.Queue.CloudQueueMessage -ArgumentList "this is a message $_"

$script = {param($p1,$m1) $p1.CloudQueue.AddMessage($m1)}

$p=[powershell]::Create()

$n=$p.AddScript($script).addargument($queue).addargument($m1)

$job=$p.BeginInvoke()
}

我的测试结果如下: enter image description here

消息已添加到 Azure 门户中: enter image description here

关于azure - 从 PowerShell 并行发送消息到 Azure 存储队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53142176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com