gpt4 book ai didi

c# - MVC 中的服务总线 + webjob。将字符串作为消息发送

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

我正在尝试学习将服务总线与 Webjob 结合使用。我正在使用 3 个项目,一个 WriterWebjobReader。我想在传递时通过服务总线发送消息。我正在尝试从 Write-project 发送消息,将其传递给 WebJob 并将文本转换为大写,然后再次通过队列将其传递给 Reader .

我在同一个解决方案中获得了所有这 3 个项目(使用 Visual Studio)。

这就是我的 WebJobfunction.cs 的样子:

namespace WebJob {
public class Functions {

public static void ProcessQueueMessage([ServiceBusTrigger("test")] BrokeredMessage message, TextWriter log)
{
var text = message.GetBody<string>().ToUppder();

Console.WriteLine(text);
log.WriteLine(text);
}
}
}

Connectionstring,以及azure上的其他东西都已经解决了。但我不知道如何将文本从 Writer 项目中的 WriterController 发送到 WebJob(将消息转换为大写)并将其传递给 ReaderController 并将其显示在 Reader 项目中。

我还没有 Controller 代码,因为我不知道如何发送它..

如何以这种方式将消息从Writer发送到Reader

最佳答案

I'm using 3 projects, one Writer, Webjob, and Reader. I want to send message via service bus when passing on. I'm trying to send a message from Write-project, pass it to WebJob and convert text to uppercase, and then pass it on to Reader via queue again.

您似乎想从“Write”项目创建服务总线队列消息,然后由服务总线触发的 WebJob 将消息内容转换为大写并将消息插入到 Azure 存储队列,然后“读取”项目将显示来自 Azure 存储队列的消息。如果是这种情况,您可以引用以下步骤和代码来设计您的项目。

在您的 WriterController 操作方法中,您可以创建服务总线队列消息。

var connectionString = "yourconnectionstring";
var queueName = "yourqueuename";

var client = QueueClient.CreateFromConnectionString(connectionString, queueName);

string mes = "your queue message";
var message = new BrokeredMessage(mes);

client.Send(message);

//redirect to another page to display message
//Thread.Sleep(2000);

//return Redirect("http://xxxx/{YourReaderControllerName}/ReadMessage");

WebJob 函数中,您可以将服务总线队列消息转换为大写,并在处理服务总线队列消息时将其作为 Azure 存储队列消息插入。

public static void CreateQueueMessage([ServiceBusTrigger("servicebusqueuename")] string message, [Queue("azurestoragequeuename")] out string outputQueueMessage, TextWriter log)
{
var text = message.ToUpper();

outputQueueMessage = text;

log.WriteLine(message);

}

在您的ReaderController操作方法中,您可以从Azure存储队列获取消息。

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
CloudConfigurationManager.GetSetting("StorageConnectionString"));

CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
CloudQueue queue = queueClient.GetQueueReference("azurestoragequeuename ");
CloudQueueMessage retrievedMessage = queue.GetMessage();

string qmes = retrievedMessage.AsString;

//Process the message, and then delete the message
//queue.DeleteMessage(retrievedMessage);

编辑:

Is it possible to send via another Service Bus queue2 from WebJob to WriterController instead? If so, would you mind modify it from Storage queue to Service Bus queue ?

当 WebJob 处理服务总线队列消息时,您可以引用此代码片段在另一个名为“queue2”的服务总线队列中创建新消息。

public static void CreateQueueMessage([ServiceBusTrigger("myqueue")] string message, [ServiceBus("queue2")] out string outputQueueMessage)
{
outputQueueMessage = message.ToUpper();

//Console.WriteLine(message);
}

关于c# - MVC 中的服务总线 + webjob。将字符串作为消息发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40332128/

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