async def test_async_queue_schedule_message(live_servicebus_config, standard_queue): client = ServiceBusClient( service_namespace=live_servicebus_config['hostname'], shared_access_key_name=live_servicebus_config['key_name'], shared_access_key_value=live_servicebus_config['access_key'], debug=True) import uuid queue_client = client.get_queue(standard_queue) enqueue_time = (datetime.utcnow() + timedelta(minutes=2)).replace(microsecond=0) async with queue_client.get_receiver() as receiver: async with queue_client.get_sender() as sender: content = str(uuid.uuid4()) message_id = uuid.uuid4() message = Message(content) message.properties.message_id = message_id message.schedule(enqueue_time) await sender.send(message) messages = await receiver.fetch_next(timeout=120) if messages: try: data = str(messages[0]) assert data == content assert messages[0].properties.message_id == message_id assert messages[0].scheduled_enqueue_time == enqueue_time assert messages[0].scheduled_enqueue_time == messages[ 0].enqueued_time.replace(microsecond=0) assert len(messages) == 1 finally: for m in messages: await m.complete() else: raise Exception("Failed to receive schdeduled message.")
async def test_async_session_schedule_message(live_servicebus_config, session_queue): client = ServiceBusClient( service_namespace=live_servicebus_config['hostname'], shared_access_key_name=live_servicebus_config['key_name'], shared_access_key_value=live_servicebus_config['access_key'], debug=True) import uuid session_id = str(uuid.uuid4()) queue_client = client.get_queue(session_queue) enqueue_time = (datetime.now() + timedelta(minutes=2)).replace(microsecond=0) async with queue_client.get_sender(session=session_id) as sender: content = str(uuid.uuid4()) message_id = uuid.uuid4() message = Message(content) message.properties.message_id = message_id message.schedule(enqueue_time) await sender.send(message) messages = [] renewer = AutoLockRenew() async with queue_client.get_receiver(session=session_id) as receiver: renewer.register(receiver, timeout=140) messages.extend(await receiver.fetch_next(timeout=120)) messages.extend(await receiver.fetch_next(timeout=5)) if messages: data = str(messages[0]) assert data == content assert messages[0].properties.message_id == message_id assert messages[0].scheduled_enqueue_time == enqueue_time assert messages[0].scheduled_enqueue_time == messages[0].enqueued_time.replace(microsecond=0) assert len(messages) == 1 else: raise Exception("Failed to receive schdeduled message.") await renewer.shutdown()
async def test_async_queue_schedule_message(live_servicebus_config, standard_queue): client = ServiceBusClient( service_namespace=live_servicebus_config['hostname'], shared_access_key_name=live_servicebus_config['key_name'], shared_access_key_value=live_servicebus_config['access_key'], debug=True) import uuid queue_client = client.get_queue(standard_queue) enqueue_time = (datetime.now() + timedelta(minutes=2)).replace(microsecond=0) async with queue_client.get_receiver() as receiver: async with queue_client.get_sender() as sender: content = str(uuid.uuid4()) message_id = uuid.uuid4() message = Message(content) message.properties.message_id = message_id message.schedule(enqueue_time) await sender.send(message) messages = await receiver.fetch_next(timeout=120) if messages: try: data = str(messages[0]) assert data == content assert messages[0].properties.message_id == message_id assert messages[0].scheduled_enqueue_time == enqueue_time assert messages[0].scheduled_enqueue_time == messages[0].enqueued_time.replace(microsecond=0) assert len(messages) == 1 finally: for m in messages: await m.complete() else: raise Exception("Failed to receive schdeduled message.")
async def main(req: func.HttpRequest) -> func.HttpResponse: body_bytes = req.get_body() if not body_bytes: return func.HttpResponse(status_code=400) body_json = json.loads(body_bytes.decode()) # Get queue client connection_str = os.environ['ServiceBusConnection'] sb_client = ServiceBusClient.from_connection_string(connection_str) queue_client = sb_client.get_queue("scheduled-tweets") # Create Service Bus message status, time_delay = body_json.get('statusUpdate'), body_json.get( 'minutesFromNow') message = Message(status) message.properties.message_id = uuid.uuid4() # schedule message enqueue_time = (datetime.utcnow() + timedelta(minutes=time_delay)).replace(microsecond=0) message.scheduled_enqueue_time message.schedule(enqueue_time) # Add message to queue await queue_client.send(message) return func.HttpResponse(status_code=201)