private async Task InvokeJobFunction(MqttApplicationMessageReceivedEventArgs mqttApplicationMessageReceivedEventArgs) { var token = _cancellationTokenSource.Token; var mqttInfo = new PublishedMqttMessage( mqttApplicationMessageReceivedEventArgs.ApplicationMessage.Topic, mqttApplicationMessageReceivedEventArgs.ApplicationMessage.Payload, mqttApplicationMessageReceivedEventArgs.ApplicationMessage.QualityOfServiceLevel.ToString(), mqttApplicationMessageReceivedEventArgs.ApplicationMessage.Retain); var triggeredFunctionData = new TriggeredFunctionData { TriggerValue = mqttInfo }; try { var result = await _executor.TryExecuteAsync(triggeredFunctionData, token).ConfigureAwait(false); if (!result.Succeeded) { if (!token.IsCancellationRequested) { _logger.LogCritical("Error firing function", result.Exception); } token.ThrowIfCancellationRequested(); } } catch (Exception e) { _logger.LogCritical("Error firing function", e); // We don't want any function errors to stop the execution. Errors will be logged to Dashboard already. } }
public static void AdvancedFunction( [MqttTrigger(typeof(ExampleMqttConfigProvider))] PublishedMqttMessage message, ILogger log) { var body = Encoding.UTF8.GetString(message.GetMessage()); log.LogInformation($"Advanced: message from topic {message.Topic} body: {body}"); }
public static void SimpleFunction( [MqttTrigger("owntracks/kees/kees01", "owntracks/marleen/marleen01", ConnectionString = "MqttConnection")] PublishedMqttMessage message, ILogger log, [Table("Locations", Connection = "StorageConnectionAppSetting")] out Trail trail) { var body = Encoding.UTF8.GetString(message.GetMessage()); log.LogInformation($"Simple: message from topic {message.Topic} body: {body}"); trail = JsonConvert.DeserializeObject <Trail>(body); trail.PartitionKey = message.Topic.Replace("/", "_"); trail.RowKey = DateTime.Now.Ticks.ToString(CultureInfo.CurrentCulture); trail.QosLevel = message.QosLevel; trail.Retain = message.Retain; }
public static void Testert([MqttTrigger(new[] { "test/topic" })] PublishedMqttMessage timer) { CallCount++; }