我正在为 azure 开发两个 WebJobs:一个将使用一个主题将消息放入服务总线队列,另一个使用相同的主题订阅 ServiceBusTrigger。
消息已正确发送到服务总线队列,但在运行订阅了 ServiceBusTrigger 的 WebJob 时,这些消息不会以 FIFO 为基础进行处理。
将消息放入服务总线队列的 WebJob 的代码如下:
NamespaceManager namespaceManager = NamespaceManager.Create();
// Delete if exists
if (namespaceManager.TopicExists("SampleTopic"))
{
namespaceManager.DeleteTopic("SampleTopic");
}
TopicDescription td = new TopicDescription("SampleTopic");
td.SupportOrdering = true;
TopicDescription myTopic = namespaceManager.CreateTopic(td);
SubscriptionDescription myAuditSubscription = namespaceManager.CreateSubscription(myTopic.Path, "ImporterSubscription");
TopicClient topicClient = TopicClient.Create("SampleTopic");
for(int i = 1; i <= 10; i++)
{
var message = new BrokeredMessage("message"+i);
topicClient.Send(message);
}
topicClient.Close();
订阅服务总线触发器的 WebJob 具有以下代码:
namespace HO.Importer.Azure.WebJob.TGZProcessor
{
public class Program
{
static void Main(string[] args)
{
JobHostConfiguration config = new JobHostConfiguration();
config.UseServiceBus();
JobHost host = new JobHost(config);
host.RunAndBlock();
}
public static void WriteLog([ServiceBusTrigger("SampleTopic", "ImporterSubscription")] string message,
TextWriter logger)
{
Console.WriteLine(message));
}
}
}
如何实现将队列中的消息作为 FIFO 处理?
提前致谢!