def rejected_message(self, msg_sequence): """Will return message to queue.""" if not self.check_call_is_in_transaction(): return TransactionMessagesResponse( None, None, True, "no active message to reject, call Receive first") else: try: msg = create_stream_queue_message_reject_request( self.queue, msg_sequence) self.stream_observer.put(msg) return TransactionMessagesResponse(next(self.inner_stream)) except Exception as e: logging.exception("Exception in reject:'%s'" % e) raise
def resend(self, queue_name): """Resend the current received message to a new channel and ack the current message.""" if not self.check_call_is_in_transaction(): return TransactionMessagesResponse( None, None, True, "no active message to resend, call Receive first") else: try: msg = create_stream_queue_message_resend_request( self.queue, queue_name) self.stream_observer.put(msg) return TransactionMessagesResponse(next(self.inner_stream)) except Exception as e: logging.exception("Exception in resend:'%s'" % e) raise
def extend_visibility(self, visibility_seconds): """Extend the visibility time for the current receive message.""" if not self.check_call_is_in_transaction(): return TransactionMessagesResponse( None, None, True, "no active message to extend visibility, call Receive first") else: try: msg = create_stream_queue_message_extend_visibility_request( self.queue, visibility_seconds) self.stream_observer.put(msg) return TransactionMessagesResponse(next(self.inner_stream)) except Exception as e: logging.exception("Exception in Extend:'%s'" % e) raise
def modify(self, msg): """Resend the new message to a new channel.""" if not self.check_call_is_in_transaction(): return TransactionMessagesResponse( None, None, True, "no active message to modify, call Receive first") else: try: if isinstance(msg, Message): msg.client_id = msg.client_id or self.queue.client_id msg = msg.convert_to_queue_message() msg.ClientID = msg.ClientID msg.MessageID = get_next_id() msg = create_stream_queue_message_modify_request( self.queue, msg) self.stream_observer.put(msg) return TransactionMessagesResponse(next(self.inner_stream)) except Exception as e: logging.exception("Exception in resend:'%s'" % e) raise
def ack_message(self, msg_sequence): """Will mark Message de-queued on queue.""" if not self.check_call_is_in_transaction(): raise Exception("no active message to ack, call Receive first") try: msg = create_stream_queue_message_ack_request( self.queue, msg_sequence) self.stream_observer.put(msg) return TransactionMessagesResponse(next(self.inner_stream)) except Exception as e: logging.exception("Exception in ack:'%s'" % e) raise
def receive(self, visibility_seconds=1, wait_time_seconds=1): """Receive queue messages request , waiting for response or timeout.""" if self.open_stream(): raise Exception("Stream already open , please call ack") try: msg = create_stream_queue_message_receive_request( self.queue, visibility_seconds, wait_time_seconds) self.stream_observer.put(msg) return TransactionMessagesResponse(next(self.inner_stream)) except Exception as e: logging.exception("Exception in receive: '%s'" % e) raise