C# Azure函数事件中心输出绑定在部署时不工作
我使用Azure函数将消息从Rabbit MQ代理获取到事件中心 当我在本地运行该函数时,它工作得非常完美 以下是函数的代码:C# Azure函数事件中心输出绑定在部署时不工作,c#,azure,azure-functions,azure-eventhub,C#,Azure,Azure Functions,Azure Eventhub,我使用Azure函数将消息从Rabbit MQ代理获取到事件中心 当我在本地运行该函数时,它工作得非常完美 以下是函数的代码: using System.Text; using System.Dynamic; using System.Threading.Tasks; using CaseOnline.Azure.WebJobs.Extensions.Mqtt; using CaseOnline.Azure.WebJobs.Extensions.Mqtt.Messaging; using Mic
using System.Text;
using System.Dynamic;
using System.Threading.Tasks;
using CaseOnline.Azure.WebJobs.Extensions.Mqtt;
using CaseOnline.Azure.WebJobs.Extensions.Mqtt.Messaging;
using Microsoft.Azure.WebJobs;
using Newtonsoft.Json;
public static class Test
{
[FunctionName("EventHubOutput")]
public static async Task Run(
[MqttTrigger("topic/#")] IMqttMessage message,
[EventHub("eventhubname", Connection = "EventHubConnectionAppSetting")] IAsyncCollector<string> outputEvents,
ILogger log)
{
var body = message.GetMessage();
var bodyString = Encoding.UTF8.GetString(body);
dynamic obj = JsonConvert.DeserializeObject<ExpandoObject>(bodyString);
obj.Topic = message.Topic;
await outputEvents.AddAsync(JsonConvert.SerializeObject(obj));
}
}
知道问题出在哪里吗
谢谢。您使用的绑定不正确。退房 以下示例显示了一个C#函数,该函数将RabbitMQ消息作为RabbitMQ事件读取并记录: 以下示例显示如何将消息作为POCO读取:
我建议您查看此完整的指南,以在Azure函数中设置Rabbit MQ触发器:我认为这个问题与代理绑定无关。CaseOnline.Azure.WebJobs.Extensions.Mqtt在获取给定主题的消息时运行良好。代理的协议是MQTT,这个扩展似乎工作得很好。出于某些原因,我甚至无法将您在此处发布的RabbitMQ触发器置于工作状态,如果您检查错误消息,则我在处理参数“outputEvents”时出错,该参数是与事件关联的指定IAsyncCollector。您是否可以尝试使用我在上面共享的MS Docs链接?我认为这可能与绑定/兼容性有关。请注意,RabbitMQ绑定仅在高级和专用计划中得到完全支持。不支持消费。此外,您能否共享为此而遵循的教程的链接?
Microsoft.Azure.WebJobs.Host.FunctionInvocationException: Exception while executing function: EventHubOutput
---> System.InvalidOperationException: Error while handling parameter outputEvents after function returned:
---> System.Net.Sockets.SocketException (0xFFFDFFFF): Name or service not known
at (...)
[FunctionName("RabbitMQTriggerCSharp")]
public static void RabbitMQTrigger_BasicDeliverEventArgs(
[RabbitMQTrigger("queue", ConnectionStringSetting = "rabbitMQConnectionAppSetting")] BasicDeliverEventArgs args,
ILogger logger
)
{
logger.LogInformation($"C# RabbitMQ queue trigger function processed message: {Encoding.UTF8.GetString(args.Body)}");
}
namespace Company.Function
{
public class TestClass
{
public string x { get; set; }
}
public class RabbitMQTriggerCSharp{
[FunctionName("RabbitMQTriggerCSharp")]
public static void RabbitMQTrigger_BasicDeliverEventArgs(
[RabbitMQTrigger("queue", ConnectionStringSetting = "rabbitMQConnectionAppSetting")] TestClass pocObj,
ILogger logger
)
{
logger.LogInformation($"C# RabbitMQ queue trigger function processed message: {pocObj}");
}
}
}