标签: azure-webjobssdk

Azure Webjob TextWriter记录器在我的方法中间处理

我正在使用带有Windows Azure Storage SDK的Webjob.当一个新项目出现在队列中时,我的类中会调用一个方法.根据SDK文档,如果我将TextWriter作为参数添加到我的方法中,SDK将为我提供一个我可以写入的TextWriter,它将显示在Webjob的日志记录基础结构中.这使得诊断问题和解决问题非常容易.

public async static void ProcessQueueMessage([QueueTrigger("queueName")]MyModelType model, TextWriter logger)
{

    await logger.WriteLineAsync(string.Format("Processing Item {0}", model.SasUrl));

    // Some work here

    await logger.WriteLineAsync(string.Format("Done Processing Item {0}", model.SasUrl));
}
Run Code Online (Sandbox Code Playgroud)

但是,很常见的是,在我的方法体内,TextWriter正在被处理掉.我在第二个logger.WriteLineAsync上遇到以下异常:

System.ObjectDisposedException was unhandled by user code
  HResult=-2146232798
  Message=Cannot write to a closed TextWriter.
  Source=mscorlib
  ObjectName=""
  StackTrace:
       at System.IO.__Error.WriterClosed()
       at System.IO.StringWriter.Write(Char[] buffer, Int32 index, Int32 count)
       at System.IO.TextWriter.WriteLine(String value)
       at System.IO.TextWriter.SyncTextWriter.WriteLine(String value)
       at System.IO.TextWriter.SyncTextWriter.WriteLineAsync(String value)
       at NameOfProject.Program.<ProcessQueueMessage>d__8.MoveNext() in c:\Dev\Path\To\Program.cs:line 173
  InnerException:
Run Code Online (Sandbox Code Playgroud)

我找不到其他人遇到这个问题,所以我无法想象SDK或webjobs基础设施中存在错误.

有没有办法告诉记录器是否在通话前被处理掉了?

有没有办法在我的方法中创建一个新的记录器,它将参与WebJobs记录子系统和UI?

azure-web-sites azure-webjobs azure-webjobssdk

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

WebJob和SignalR Hub之间的通信

我有以下场景:

  • 我有一个天蓝色的webjob(用于发送邮件),我需要在我的Web应用程序中检查webjob的进度.
  • 我正在使用SignalR与我的服务器上的客户端进行通信.
  • 当我想发送电子邮件时,我会在队列中输入一条消息,而azure webjob会完成他的工作.

问题是,如何将webjob的进度传达给客户?最初我的想法是从webjob推送消息,因此Hub可以从队列中读取它.然后,我会通过集线器通知客户.但是,我无法找到传达webjob和集线器的方法,当消息被推入队列或服务总线时,我不知道如何在集线器中触发操作.也就是说,我不知道如何将集线器订阅到队列的某个消息.

有人可以帮我吗?

signalr azure-servicebus-queues asp.net-mvc-5 azure-webjobs azure-webjobssdk

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

Azure WebJobs和ServiceBusTrigger

毒性消息处理如何为Azure WebJobs SDK工作ServiceBusTrigger?我希望将已经出队超过'x'次的服务总线队列消息推送到不同的ServiceBus(或)存储队列

在线文档这里这里和SDK样本,这里不会对带毒邮件如何处理作品ServiceBusTrigger例子.这项工作正在进行中吗?

我尝试使用dequeueCount参数实现自定义病毒消息处理,但它看起来不支持ServiceBusTriggers,因为我得到了一个运行时异常{"Cannot bind parameter 'dequeueCount' when using this trigger."}

public static void ProcessMessage([ServiceBusTrigger(topicName: "abc", subscriptionName: "abc.gdp")] NotificationMessage message,
            [Blob("rox/{PayloadId}", FileAccess.Read)] Stream blobInput, Int32 dequeueCount)
        {
            throw new ArgumentNullException();
        }
Run Code Online (Sandbox Code Playgroud)

c# azure azureservicebus azure-webjobs azure-webjobssdk

8
推荐指数
2
解决办法
6905
查看次数

Azure WebJob"无法创建SSL/TLS安全通道"

我有一个Azure WebJob,它在本地运行时工作正常,但在Azure中运行时会引发异常.WebJob正在通过HTTPS进行外部调用,在Azure中会产生此异常:

System.Net.WebException:请求已中止:无法创建SSL/TLS安全通道.在System.Net.HttpWebRequest.GetResponse()

我也尝试将安全协议设置为TLS,ServicePointManager但这对异常没有影响.这是我的代码片段.

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

var request = (HttpWebRequest)WebRequest.Create(url);
                request.Method = "GET";
Run Code Online (Sandbox Code Playgroud)

Azure是否阻止WebJobs上网或我做错了什么?

azure azure-web-sites azure-webjobs azure-webjobssdk

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

使用WebJob将Web App发布到Azure时遇到困难

我刚刚使用WebJob SDK将WebJob添加到我的Web应用程序中.

现在,在发布Web应用程序时,VS在发布时卡住(不挂起,但也没有进展).

我知道它是由WebJob引起的,因为当我删除webjobs-list.json它时,它会完美地发布.

奇怪的是,单独发布WebJob(使用Publish as Azure WebJob)并不会出现这个问题.

如果重要,请使用.NET Framework 4.5.1. 更新: 4.5没有任何区别.

这是问题的图像:

问题

azure visual-studio azure-webjobs azure-webjobssdk

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

在Azure Webjobs SDK中设置nextVisibleTime

我正在使用Azure Webjobs处理队列中的消息.

我看到Webjobs SDK在10分钟后再次处理任何失败的消息,如果失败5次,它会将其移动到毒性队列(1).

此外,我可以看到队列中消息的nextVisibleTime,即插入时间(2)后10分钟.

我想使用AzureSDK错误处理消息,但我不能等待10分钟再次处理消息.

有什么方法可以将nextVisibleTime设置为几秒钟吗?

在Azure应用服务中创建.NET WebJob

如果方法在完成之前失败,则不删除队列消息; 在10分钟的租约到期后,该消息将被释放以便再次接收并处理.

如何使用WebJobs SDK使用Azure队列存储

public static void WriteLog([QueueTrigger("logqueue")] string logMessage,
    DateTimeOffset expirationTime,
    DateTimeOffset insertionTime,
    DateTimeOffset nextVisibleTime,
Run Code Online (Sandbox Code Playgroud)

注意:StackOverflow中有类似的问题,但没有答案:

azure-storage-queues azure-webjobs azure-webjobssdk

8
推荐指数
2
解决办法
1201
查看次数

如何扩展Azure Webjobs

我知道webjob与webapp一起扩展,即如果我的webapp在5个实例上运行,那么webjobs也将在5个实例上运行.我只是想知道是否有一种方法可以在网站的每个实例中拥有多个webjob实例.

注意:我已经有最大值JobHostConfiguration.QueuesConfiguration.BatchSize = 32.

现在,我的webapp正在运行1个实例.Webjobs同时处理32个.我的目标是同时处理3*32 = 96.

实现此目标的一种可能方法是部署相同的webjobs 3次(为webJobName属性设置不同的名称),但我不确定这是否是一个好的做法.请指出相应的文件.

  1. 什么config.Queues.NewBatchThreshold说明什么?

  2. config.Queues.NewBatchThreshold的默认值是什么

  3. 对于队列处理,应该是config.Queues.NewBatchThreshold的推荐值?

azure azure-webjobs azure-webjobssdk webjob

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

从单个 Web 应用程序同时运行同一 Azure WebJob 的多个实例

我创建了一个简单的天蓝色网络作业,它从传入的网站中获取一些数据,解析它并将其添加到数据库中。

它只是一个接受参数的简单控制台应用程序(.exe 文件)。并将其上传到 Azure 上的 Web 应用程序。

然而,我的印象是,这个网络作业会根据需要多次启动和完成。因此,如果我依次向 webjob 发出 3 个命令,最终会得到 3 个 webjob 实例同时运行。

但是,这不起作用。我只能让它运行一次。其他两个命令失败。是否可以在单个 Web 应用程序中拥有单个 Web 作业并让它同时运行,同时处理不同内容的同一个 Web 作业也在运行?

azure azure-webjobs azure-webjobssdk

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

预定的WebJob

我正在创建一个新的Azure WebJob项目 - 它似乎是一个可以作为Web作业运行的控制台应用程序的精美版本.

我希望这个工作能够根据时间表运行,但是在Main()方法中 - 见下文 - 微软为您host.RunAndBlock()提供了连续运行的工作.

如果我希望工作定期运行,我是否需要更改?

static void Main()
{
    var host = new JobHost();

    // The following code ensures that the WebJob will be running continuously
    host.RunAndBlock();
}
Run Code Online (Sandbox Code Playgroud)

azure azure-webjobs azure-webjobssdk

7
推荐指数
2
解决办法
8393
查看次数

“IWebJobsBuilder”不包含“AddAzureStorageCoreServices”“AddTimers”的定义

缺少升级到 Webjob V3 的参考

安装参考

“IWebJobsBuilder”不包含“AddTimers”的定义,并且找不到接受“IWebJobsBuilder”类型的第一个参数的可访问扩展方法“AddTimers”(您是否缺少 using 指令或程序集引用?)

azure azure-webjobs azure-webjobssdk

7
推荐指数
3
解决办法
6380
查看次数