ServiceBusSender クラス

ServiceBusSender クラスは、Azure Service Bus キューまたはトピックにメッセージを送信するための高度なインターフェイスを定義します。

~azure.servicebus.aio.ServiceBusClient のメソッドを使用 get_<queue/topic>_sender して、ServiceBusSender インスタンスを作成してください。

継承
azure.servicebus.aio._base_handler_async.BaseHandler
ServiceBusSender
azure.servicebus._servicebus_sender.SenderMixin
ServiceBusSender

コンストラクター

ServiceBusSender(fully_qualified_namespace: str, credential: AsyncTokenCredential | AzureSasCredential | AzureNamedKeyCredential, *, queue_name: str | None = None, topic_name: str | None = None, **kwargs: Any)

パラメーター

fully_qualified_namespace
str
必須

Service Bus 名前空間の完全修飾ホスト名。 名前空間の形式は .servicebus.windows.net です。

credential
AsyncTokenCredential または AzureSasCredential または AzureNamedKeyCredential
必須

トークンを取得するための特定のインターフェイスを実装する認証に使用される資格情報オブジェクト。 azure-identity ライブラリによって生成された資格情報オブジェクトと、*get_token(self, scopes) メソッドを実装するオブジェクトを受け入れます。または、AzureSasCredential も指定できます。

queue_name
str

クライアントが接続する特定の Service Bus キューのパス。 queue_nameまたはtopic_nameの 1 つだけを指定できます。

topic_name
str

クライアントが接続する特定の Service Bus トピックのパス。 queue_nameまたはtopic_nameの 1 つだけを指定できます。

logging_enable
bool

ネットワーク トレース ログをロガーに出力するかどうか。 既定値は False です。

transport_type
TransportType

Service Bus サービスとの通信に使用されるトランスポート プロトコルの種類。 既定値は TransportType.Amqp です

http_proxy
Dict

HTTP プロキシ設定。 これは、次のキーを持つディクショナリである必要があります: 'proxy_hostname' (str 値) と 'proxy_port' (int 値)。 さらに、次のキーが存在する場合もあります: 'username'、'password'

user_agent
str

指定した場合、これは組み込みのユーザー エージェント文字列の前に追加されます。

client_identifier
str

クライアント インスタンスを一意に識別するための文字列ベースの識別子。 Service Bus は、エラーの関連付けを容易にするために、一部のエラー メッセージに関連付けます。 指定しない場合は、一意の ID が生成されます。

socket_timeout
float

データの送受信時に接続の基になるソケットがタイムアウトするまでに待機する時間 (秒単位)。既定値は、TransportType.Amqp の場合は 0.2、TransportType.AmqpOverWebsocket の場合は 1 です。 書き込みタイムアウトが原因で接続エラーが発生している場合は、既定値より大きい値を渡す必要があります。

変数

fully_qualified_namespace
str

Service Bus 名前空間の完全修飾ホスト名。 名前空間の形式は .servicebus.windows.net です。

entity_name
str

クライアントが接続するエンティティの名前。

メソッド

cancel_scheduled_messages

以前にスケジュールされ、まだ保留中の 1 つ以上のメッセージを取り消します。

close

ハンドラー接続を閉じます。

ハンドラーが既に閉じている場合、この操作は何も行いません。 オプションの例外を渡して、エラーが原因でハンドラーがシャットダウンされたことを示すことができます。

create_message_batch

max_size_in_bytesによって制約されているすべてのコンテンツの最大サイズを持つ ServiceBusMessageBatch オブジェクトを作成します。 max_sizeは、サービスによって定義された最大許容メッセージ サイズを超えてはなりません。

schedule_messages

サービスによって特定の時刻にエンキューされるメッセージまたは複数のメッセージを送信します。 エンキューされたメッセージのシーケンス番号の一覧を返します。

send_messages

受信確認が受信されるか、操作がタイムアウトするまで、メッセージとブロックを送信します。

メッセージの一覧が指定されている場合は、1 つのバッチとして送信を試み、1 つのバッチに収まらない場合は ValueError をスローします。

cancel_scheduled_messages

以前にスケジュールされ、まだ保留中の 1 つ以上のメッセージを取り消します。

async cancel_scheduled_messages(sequence_numbers: int | List[int], *, timeout: float | None = None, **kwargs: Any) -> None

パラメーター

sequence_numbers
int または list[int]
必須

スケジュールされたメッセージのシーケンス番号。

timeout
float

すべての再試行を含む合計操作タイムアウト (秒単位)。 指定する場合、値は 0 より大きくする必要があります。 既定値は None で、タイムアウトがないことを意味します。

の戻り値の型 :

例外

azure.servicebus.exceptions.ServiceBusError if messages cancellation failed due to message alreadycancelled or enqueued.

今後送信される予定のメッセージの取り消し


   async with servicebus_sender:
       await servicebus_sender.cancel_scheduled_messages(sequence_nums)

close

ハンドラー接続を閉じます。

ハンドラーが既に閉じている場合、この操作は何も行いません。 オプションの例外を渡して、エラーが原因でハンドラーがシャットダウンされたことを示すことができます。

async close() -> None

の戻り値の型 :

例外

azure.servicebus.exceptions.ServiceBusError if messages cancellation failed due to message alreadycancelled or enqueued.

create_message_batch

max_size_in_bytesによって制約されているすべてのコンテンツの最大サイズを持つ ServiceBusMessageBatch オブジェクトを作成します。 max_sizeは、サービスによって定義された最大許容メッセージ サイズを超えてはなりません。

async create_message_batch(max_size_in_bytes: int | None = None) -> ServiceBusMessageBatch

パラメーター

max_size_in_bytes
int または None
既定値: None

ServiceBusMessageBatch オブジェクトが保持できるバイト データの最大サイズ。 既定では、この値は Service Bus レベルによって決定されます。

戻り値

ServiceBusMessageBatch オブジェクト

の戻り値の型 :

例外

azure.servicebus.exceptions.ServiceBusError if messages cancellation failed due to message alreadycancelled or enqueued.

制限されたサイズ内で ServiceBusMessageBatch オブジェクトを作成する


   async with servicebus_sender:
       batch_message = await servicebus_sender.create_message_batch()
       batch_message.add_message(ServiceBusMessage("Single message inside batch"))

schedule_messages

サービスによって特定の時刻にエンキューされるメッセージまたは複数のメッセージを送信します。 エンキューされたメッセージのシーケンス番号の一覧を返します。

async schedule_messages(messages: Mapping[str, Any] | ServiceBusMessage | AmqpAnnotatedMessage | Iterable[Mapping[str, Any]] | Iterable[ServiceBusMessage] | Iterable[AmqpAnnotatedMessage], schedule_time_utc: datetime, *, timeout: float | None = None, **kwargs: Any) -> List[int]

パラメーター

messages
Union[ServiceBusMessage, AmqpAnnotatedMessage, List[Union[ServiceBusMessage, AmqpAnnotatedMessage]]]
必須

スケジュールするメッセージまたはメッセージの一覧。

schedule_time_utc
datetime
必須

メッセージをエンキューする utc 日時。

timeout
float

すべての再試行を含む合計操作タイムアウト (秒単位)。 指定する場合、値は 0 より大きくする必要があります。 既定値は None で、タイムアウトがないことを意味します。

戻り値

エンキューされたメッセージのシーケンス番号。

の戻り値の型 :

例外

azure.servicebus.exceptions.ServiceBusError if messages cancellation failed due to message alreadycancelled or enqueued.

メッセージを今後送信するようにスケジュールする


   async with servicebus_sender:
       scheduled_time_utc = datetime.datetime.utcnow() + datetime.timedelta(seconds=30)
       scheduled_messages = [ServiceBusMessage("Scheduled message") for _ in range(10)]
       sequence_nums = await servicebus_sender.schedule_messages(scheduled_messages, scheduled_time_utc)

send_messages

受信確認が受信されるか、操作がタイムアウトするまで、メッセージとブロックを送信します。

メッセージの一覧が指定されている場合は、1 つのバッチとして送信を試み、1 つのバッチに収まらない場合は ValueError をスローします。

async send_messages(message: Mapping[str, Any] | ServiceBusMessage | AmqpAnnotatedMessage | Iterable[Mapping[str, Any]] | Iterable[ServiceBusMessage] | Iterable[AmqpAnnotatedMessage] | ServiceBusMessageBatch, *, timeout: float | None = None, **kwargs: Any) -> None

パラメーター

message
Union[ServiceBusMessage, ServiceBusMessageBatch, AmqpAnnotatedMessage, List[Union[ServiceBusMessage, AmqpAnnotatedMessage]]]
必須

送信する ServiceBus メッセージ。

timeout
Optional[float]

すべての再試行を含む合計操作タイムアウト (秒単位)。 指定する場合、値は 0 より大きくする必要があります。 既定値は None で、タイムアウトがないことを意味します。

の戻り値の型 :

例外

azure.servicebus.exceptions.OperationTimeoutError if sending times out.

メッセージを送信します。


   async with servicebus_sender:
       message_send = ServiceBusMessage("Hello World")
       await servicebus_sender.send_messages(message_send)

属性

client_identifier

送信者インスタンスに関連付けられている ServiceBusSender クライアント識別子を取得します。

の戻り値の型 :

str