C# 用于会话的Azure WebJob ServiceBusTrigger
我知道可以从服务总线队列接收消息,如:C# 用于会话的Azure WebJob ServiceBusTrigger,c#,azureservicebus,azure-webjobs,azure-servicebus-queues,azure-webjobssdk,C#,Azureservicebus,Azure Webjobs,Azure Servicebus Queues,Azure Webjobssdk,我知道可以从服务总线队列接收消息,如: public static void ProcessQueueMessage([ServiceBusTrigger("inputqueue")] string message, TextWriter logger) 但是,是否也有一种通过触发器属性接收会话的方法?像ServiceBusSessionTrigger这样的东西 通常,人们会接受这样的会议: var session = queueClient.AcceptMessageSession();
public static void ProcessQueueMessage([ServiceBusTrigger("inputqueue")] string message, TextWriter logger)
但是,是否也有一种通过触发器属性接收会话的方法?像ServiceBusSessionTrigger这样的东西
通常,人们会接受这样的会议:
var session = queueClient.AcceptMessageSession();
但是我更喜欢WebJob SDK处理如何一次处理多个会话
编辑:
似乎当前不支持此操作:
编辑2:它们似乎是当前您无法通过触发器属性接收会话,但存在一个错误。如果这是许多人认为有用的东西,那么将其烘焙到核心ServiceBus程序集中是有意义的。此nuget Microsoft.Azure.WebJobs.Extensions.ServiceBus在Azure函数的3.1.0-beta3版本支持会话中。安装此nuget时, 您将能够像下面的代码一样使用它
[ServiceBusTrigger(“testsessionqueue”,Connection=“serviceBusConnectionString”,IsSessionEnabled=true)]
在那里你可以找到nuget:
这是github的一个问题:
请记住,它仍然是beta版Hi@Zenuka,我也有这个问题。我可以问一下你最后是如何解决的吗?@JasonSteele,我不知道我用了哪个博客/教程/视频来实现它,比如'var session=queueClient.AcceptMessageSession()',但我想你可以用这个作为指导:那么我们可以得到属于同一个会话的所有消息吗?怎么做?这没用。您能否将具有特定会话的所有邮件转发到队列?您需要将sessionId作为属性提供给邮件,并确保您的队列或主题支持session,然后Azure service bus将使用会话功能。支持会话的Azure函数只是一个端点,因此它只能以FIFO顺序捕获消息。有关会话的更多详细信息,请参见msdn中的一句话:“在会话感知队列或订阅上,当至少有一条消息具有会话的SessionId时,会话就开始存在。一旦会话存在,就没有定义会话过期或消失的时间或API。从理论上讲,一个会话可以在今天收到一条消息,一年后的下一条消息,如果SessionId匹配,那么从服务总线的角度来看,会话是相同的。“请注意,这个功能现在已经发布,不再是beta版。您如何迭代会话中的所有消息?