azure用の2つのWebJobを開発しています.1つはトピックを使用してService Bus Queueにメッセージを入れ、もう1つはServiceBusTriggerに同じトピックを使用して購読します。Microsoft Azure Service Bus QueueがFIFOとして機能する
メッセージはサービスバスキューに正しく送信されますが、ServiceBusTriggerに登録されたWebJobを実行すると、これらのメッセージはFIFOベースで処理されません。
サービスバスキューにメッセージを入れる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));
}
}
}
:サービス・バスのトリガにsubscritedさ
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を次のコードを持っていますキューからメッセージをFIFOとして処理するにはどうすればよいですか?
ありがとうございます!
ありがとうございます!私がする必要があるのは、blobがコンテナにアップロードされているときにblobを処理することです。必要なものの1つは、ブロブに到着する順に処理する必要があるため、注文をサポートするように設定されているサービスバスキューに通知することで問題が解決されると考えました。 –
ブロブがどのように到着するかによって、これを実現するカスタムロジックを構築することができます。ブロブが正しい順序で入っていることが分かっている場合は、代わりにブロブトリガーを使用しないでください。 –