c# - 使用服务总线触发器在 Azure 函数中自动转发消息
问题描述
当我有自动转发队列时,Azure 功能无法启动:
函数 XXX 错误:函数“FunctionXXX”的侦听器无法启动。Microsoft.ServiceBus:无法在启用了自动转发的实体上创建消息接收器。
// Code to create the queue:
var manager = NamespaceManager.CreateFromConnectionString("ConnectionString");
manager.CreateQueue(new QueueDescription("myqueue_done")
{
RequiresSession = false
});
manager.CreateQueue(new QueueDescription("myqueue")
{
ForwardTo = "myqueue_done",
RequiresSession = false
});
这是我的天蓝色功能:
[FunctionName("FunctionXXX")]
public static void Run([ServiceBusTrigger("myqueue", Connection = "AzureSbConnectionString")]string myQueueItem, string messageId, string CorrelationId, TraceWriter log)
{
log.Info($"Message id={messageId}, CorrelationId={CorrelationId}, was processed: {myQueueItem}");
}
真的有限制吗?有没有更好的方法在这个天蓝色函数沙箱方法中移动处理过的消息?
谢!
解决方案
这不是功能的限制,而是服务总线的工作方式。
启用自动转发后,服务总线会自动删除放置在第一个队列或订阅(源)中的消息,并将它们放入第二个队列或主题(目标)中。
如果您的消息被转发到另一个队列并从原始队列中删除,那么从同一队列创建手动接收器实际上没有意义。
推荐阅读
- laravel-5 - 规划一个 laravel 应用程序 - MVC 灾难
- r - 在 r 中调整 grob 对象的边距
- node.js - 将 .inv 添加到 req,session 后网站超时
- python - 恢复 pytorch 模型训练会引发错误“CUDA out of memory”
- sql - 来自查询的 Oracle SQL 过滤结果
- python - 在python中为类创建链方法
- php - 使用 foreach php 组合并构建数组
- c - 在没有 sizeof() 的情况下计算 int 中有多少位
- c# - 按钮在预览中未显示在运行中
- php - 如何在数组的开头和结尾添加html