コード例 #1
0
    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
コード例 #2
0
    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
コード例 #3
0
    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
コード例 #4
0
    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
コード例 #5
0
    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
コード例 #6
0
    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