2017-03-29 10 views
1

メッセージをトピックから取り出す唯一の方法は、トピックが新しいメッセージを受信した場合にのみトリガするように見えるSubscriptionClient.OnMessage()です。Azure Servicebusトピックに含まれるすべてのメッセージをアプリに取り込むことは可能ですか?

キューには、この目的でQueueClient.Receive()メソッドがありますが、トピックにはこの機能がないようです。

何か不足していますか?

+0

トピックに複数のサブスクリプションを含めることができます。したがって、すべてのメッセージを受け取るには(正確に何を意味するかわからない)、すべてのメッセージをすべての購読から取得する必要があります。 – Thomas

答えて

1

最初に、Sean Feldmanが言ったように、直接メッセージからトピックを受け取らないからメッセージが届きません。さらに、すべてのメッセージを受信して​​処理する場合は、既定の(MatchAll)フィルタを使用してサブスクリプションを作成すると、トピックに公開されているすべてのメッセージがサブスクリプションの仮想キューに配置され、アプリケーション内のそのサブスクリプションからのメッセージThis articleは、サービスバスのトピックとサブスクリプションの使用例を示します。参照してください。

また、必要に応じてデッドレターメッセージを確認して処理してください。

0

SubscriptionClient.OnMessage()のように見えますが、実際にはトピックのすべての既存のメッセージが表示されます。

0

トピックのみからメッセージを受け取ることはできません。トピックは、メッセージを受信するためにサブスクリプションと共に使用されます。

キューとsubscriptionsは、OnMessage APIをサポートしています。ただし、すべてのメッセージを表示するわけではありませんが、代わりにOnMessageOptionsで設定する並行性レベルを1つのメッセージに一度に指定します。

別のアプローチは、バッチを受け取ることです(ReceiveBatchAsync(Int32, TimeSpan)を参照)。これにより、必要な場合に複数のメッセージを処理することができます。

関連する問題