gpt4 book ai didi

c# - 当具有服务总线队列的工作角色完成其处理时,如何通知?

转载 作者:行者123 更新时间:2023-12-03 05:54:56 25 4
gpt4 key购买 nike

我正在尝试使用带有服务总线队列的 Azure WorkerRoles 创建一个微服务并使其正常工作,但我不确定从这里开始哪里。

目前,我可以连接到 WorkerRole 并发送一 strip 有我想要进行 OCR 的图像 URI 的代理消息,并且我可以在图像上运行 OCR,但是如何返回到客户端OCR 已完成并提取文本,因为它是异步的?

这是我的 Client.OnMessage 实现

Client.OnMessage((receivedMessage) =>
{
try
{
MyServiceBusMessage messageBody = receivedMessage.GetBody<MyServiceBusMessage>();

// Process the message
Trace.WriteLine("Processing Service Bus message: " + receivedMessage.SequenceNumber.ToString());
Trace.WriteLine("Service Bus message ID: " + messageBody.ID);
Trace.WriteLine("Service Bus message Type: " + messageBody.Type);
Trace.WriteLine("Service Bus message Image Name: " + messageBody.ImageUri);

Uri imageURi = messageBody.ImageUri;
Guid imageGuid = messageBody.ID;

receivedMessage.Complete();

string text = DoOCR(imageGuid, imageURi);
}
catch(Exception ex)
{
receivedMessage.DeadLetter("Exception Occured", ex.Message);
// Handle any message processing specific exceptions here
}
});

但现在我不知道从这里去哪里,而且我在网上找不到任何有用的东西,所以我想知道是否有人对下一步该去哪里有任何想法或提示。

目前我正在使用控制台应用程序将消息发送到队列,如下所示:

QueueClient client = QueueClient.CreateFromConnectionString(constr, queueName);
using (var bMessage = new BrokeredMessage(message))
{
client.Send(bMessage);
}

我可以向客户端发送一条消息,让其知道 OCR 已完成提取的文本吗?如果是这样,我将如何实现这一目标?

最佳答案

您描述的场景听起来像典型的 Request/Reply图案。您可以让控制台应用程序监听另一个队列,并让工作角色在完成后发送一条消息,包括状态和原始图像 ID。

您还可以研究可以更轻松地实现您想要的目标的框架。看看NServiceBus或大众运输。两者都支持不同的传输方式和 Azure Service Bus就是其中之一。

旁注:我注意到您在 OCR 工作之前完成了消息。您可能想要更改它并在 OCR 调用完成后完成消息。目前,如果 DoOCR() 抛出异常,您的消息将永远不会被重试,因为它将被标记为已完成。

关于c# - 当具有服务总线队列的工作角色完成其处理时,如何通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42797071/

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