gpt4 book ai didi

c# - 从 CRM 插件订阅 Azure 服务总线主题

转载 作者:行者123 更新时间:2023-12-03 01:48:40 25 4
gpt4 key购买 nike

我已成功将消息从 CRM 插件发布到 Azure 服务总线队列。理想情况下,我需要 CRM 来监听主题(订阅)并在接收时执行操作。我不知道这对于 CRM 是否可行,也找不到实现它的方法。我可以使用以下内容从队列中读取内容;

    MessagingFactory factory = MessagingFactory.CreateFromConnectionString(QueueConnectionString);

//Receiving a message
MessageReceiver testQueueReceiver = factory.CreateMessageReceiver(QueueName);
while (true)
{
using (BrokeredMessage retrievedMessage = testQueueReceiver.Receive())
{
try
{
var message = new StreamReader(retrievedMessage.GetBody<Stream>(), Encoding.UTF8).ReadToEnd();
retrievedMessage.Complete();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
retrievedMessage.Abandon();
}
}
}

但是,当用户操作执行插件时,会调用此函数。我需要一直倾听。这可以通过CRM来实现吗?我在本地使用 CRM 2016,消息总线托管在 Azure 中。

感谢您的指点。

最佳答案

CRM 不是一个始终监听的应用程序。它是一个由 HTTP 请求触发的 Web 应用程序。为了弥补这一差距,您可以使用 Azure Functions。由于 Azure 函数可以由服务总线触发并且可以调用 Dynamics CRM。

您将需要创建一个由服务总线队列触发的部署 Azure 函数。这在以下位置有详细记录:https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-service-bus

为您的 Azure 函数创建一个 package.json:

{
"bindings": [
{
"queueName": "testqueue",
"connection": "MyServiceBusConnection",
"name": "myQueueItem",
"type": "serviceBusTrigger",
"direction": "in"
}
],
"disabled": false
}

基本功能代码:

public static void Run(string myQueueItem, TraceWriter log)
{
log.Info($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
}

完成此操作后,您可以构建 Azure Function 代码来连接到 Dynamics CRM - 与任何其他代码相同。

将依赖项添加到project.json(必须按照此处讨论的方式完全正确:http://crmtipoftheday.com/2016/12/12/connect-to-dynamics-365-in-azure-functions/):

{
"frameworks": {
"net46":{
"dependencies": {
"Microsoft.CrmSdk.CoreAssemblies": "8.2.0",
"Microsoft.CrmSdk.XrmTooling.CoreAssembly": "8.2.0"
}
}
}
}

关于c# - 从 CRM 插件订阅 Azure 服务总线主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42490316/

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