メッセージをトピックから取り出す唯一の方法は、トピックが新しいメッセージを受信した場合にのみトリガするように見えるSubscriptionClient.OnMessage()です。Azure Servicebusトピックに含まれるすべてのメッセージをアプリに取り込むことは可能ですか?
キューには、この目的でQueueClient.Receive()メソッドがありますが、トピックにはこの機能がないようです。
何か不足していますか?
メッセージをトピックから取り出す唯一の方法は、トピックが新しいメッセージを受信した場合にのみトリガするように見えるSubscriptionClient.OnMessage()です。Azure Servicebusトピックに含まれるすべてのメッセージをアプリに取り込むことは可能ですか?
キューには、この目的でQueueClient.Receive()メソッドがありますが、トピックにはこの機能がないようです。
何か不足していますか?
最初に、Sean Feldmanが言ったように、直接メッセージからトピックを受け取らないからメッセージが届きません。さらに、すべてのメッセージを受信して処理する場合は、既定の(MatchAll)フィルタを使用してサブスクリプションを作成すると、トピックに公開されているすべてのメッセージがサブスクリプションの仮想キューに配置され、アプリケーション内のそのサブスクリプションからのメッセージThis articleは、サービスバスのトピックとサブスクリプションの使用例を示します。参照してください。
また、必要に応じてデッドレターメッセージを確認して処理してください。
SubscriptionClient.OnMessage()
のように見えますが、実際にはトピックのすべての既存のメッセージが表示されます。
トピックのみからメッセージを受け取ることはできません。トピックは、メッセージを受信するためにサブスクリプションと共に使用されます。
キューとsubscriptionsは、OnMessage APIをサポートしています。ただし、すべてのメッセージを表示するわけではありませんが、代わりにOnMessageOptions
で設定する並行性レベルを1つのメッセージに一度に指定します。
別のアプローチは、バッチを受け取ることです(ReceiveBatchAsync(Int32, TimeSpan)
を参照)。これにより、必要な場合に複数のメッセージを処理することができます。
トピックに複数のサブスクリプションを含めることができます。したがって、すべてのメッセージを受け取るには(正確に何を意味するかわからない)、すべてのメッセージをすべての購読から取得する必要があります。 – Thomas