diff --git a/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/client.py b/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/client.py index 610c3f188418..51794833e526 100644 --- a/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/client.py +++ b/sdk/eventhub/azure-eventhub/azure/eventhub/_pyamqp/client.py @@ -576,7 +576,7 @@ class SendClient(AMQPClient): def __init__(self, hostname, target, **kwargs): self.target = target # Sender and Link settings - self._max_message_size = kwargs.pop("max_message_size", MAX_FRAME_SIZE_BYTES) + self._max_message_size = kwargs.pop("max_message_size", 0) self._link_properties = kwargs.pop("link_properties", None) self._link_credit = kwargs.pop("link_credit", None) super(SendClient, self).__init__(hostname, **kwargs) diff --git a/sdk/eventhub/azure-eventhub/samples/sync_samples/send.py b/sdk/eventhub/azure-eventhub/samples/sync_samples/send.py index e6cbef44aa12..0dc4d2431ca8 100644 --- a/sdk/eventhub/azure-eventhub/samples/sync_samples/send.py +++ b/sdk/eventhub/azure-eventhub/samples/sync_samples/send.py @@ -16,11 +16,19 @@ import time import os import threading +import logging from concurrent.futures import ThreadPoolExecutor from azure.eventhub import EventHubProducerClient, EventData from azure.eventhub.exceptions import EventHubError +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) +logger.setLevel(logging.INFO) +handler = logging.StreamHandler() +formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') +handler.setFormatter(formatter) +logger.addHandler(handler) CONNECTION_STR = os.environ["EVENT_HUB_CONN_STR"] EVENTHUB_NAME = os.environ["EVENT_HUB_NAME"] @@ -94,6 +102,21 @@ def send_event_data_list(producer): except EventHubError as eh_err: print("Sending error: ", eh_err) +def send_single_large_message(producer, size_mb=17): + """ + Try to send one single oversized message to Event Hub using a logger. + """ + payload = "X" * (size_mb * 1024 * 1024) # 17 MB string by default + try: + batch = producer.create_batch(max_size_in_bytes=19 * 1024 * 1024) # 19MB limit + batch.add(EventData(payload)) + producer.send_batch(batch) + logger.info("Successfully sent %d MB message.", size_mb) + except ValueError as e: + logger.warning("Failed to add %d MB message to batch -> %s", size_mb, e) + except Exception as e: + logger.error("Failed to send %d MB message -> %s", size_mb, e) + def send_concurrent_with_shared_client_and_lock(): """ @@ -139,6 +162,7 @@ def send_with_lock(thread_id): send_event_data_batch_with_partition_id(producer) send_event_data_batch_with_properties(producer) send_event_data_list(producer) + send_single_large_message(producer, size_mb=17) print("Send messages in {} seconds.".format(time.time() - start_time))