Пример #1
0
 def _subscribe_to_topic(self):
     topic_filter = zmq_address.target_to_subscribe_filter(self.target)
     self.socket.setsockopt(zmq.SUBSCRIBE, topic_filter)
     LOG.debug("[%(host)s] Subscribing to topic %(filter)s", {
         "host": self.host,
         "filter": topic_filter
     })
 def _get_routing_keys(self, request):
     if request.msg_type in zmq_names.DIRECT_TYPES:
         return [self.routing_table.get_round_robin_host(request.target)]
     else:
         return \
             [zmq_address.target_to_subscribe_filter(request.target)] \
             if self.conf.oslo_messaging_zmq.use_pub_sub else \
             self.routing_table.get_fanout_hosts(request.target)
 def _get_routing_keys(self, request):
     if request.msg_type in zmq_names.DIRECT_TYPES:
         return [self.routing_table.get_round_robin_host(request.target)]
     else:
         return \
             [zmq_address.target_to_subscribe_filter(request.target)] \
             if self.conf.oslo_messaging_zmq.use_pub_sub else \
             self.routing_table.get_fanout_hosts(request.target)
 def _get_routing_keys(self, request):
     try:
         if request.msg_type in zmq_names.DIRECT_TYPES:
             return [self.routing_table.get_routable_host(request.target)]
         else:
             return \
                 [zmq_address.target_to_subscribe_filter(request.target)] \
                 if self.conf.use_pub_sub else \
                 self.routing_table.get_all_hosts(request.target)
     except retrying.RetryError:
         return []
Пример #5
0
 def _subscribe_on_target(self, target):
     topic_filter = zmq_address.target_to_subscribe_filter(target)
     if target.topic:
         self.socket.setsockopt(zmq.SUBSCRIBE, six.b(target.topic))
     if target.server:
         self.socket.setsockopt(zmq.SUBSCRIBE, six.b(target.server))
     if target.topic and target.server:
         self.socket.setsockopt(zmq.SUBSCRIBE, topic_filter)
     LOG.debug("[%(host)s] Subscribing to topic %(filter)s",
               {"host": self.socket.handle.identity,
                "filter": topic_filter})
Пример #6
0
 def _subscribe_on_target(self, target):
     topic_filter = zmq_address.target_to_subscribe_filter(target)
     if target.topic:
         self.socket.setsockopt(zmq.SUBSCRIBE, six.b(target.topic))
     if target.server:
         self.socket.setsockopt(zmq.SUBSCRIBE, six.b(target.server))
     if target.topic and target.server:
         self.socket.setsockopt(zmq.SUBSCRIBE, topic_filter)
     LOG.debug("[%(host)s] Subscribing to topic %(filter)s", {
         "host": self.socket.handle.identity,
         "filter": topic_filter
     })
Пример #7
0
    def _send_request(self, target):
        #  Needed only in test env to give listener a chance to connect
        #  before request fires
        time.sleep(1)
        context = {}
        message = {'method': 'hello-world'}

        self.publisher.send_request(
            [b'', b'', zmq_names.CAST_FANOUT_TYPE,
             zmq_address.target_to_subscribe_filter(target),
             b"0000-0000",
             self.dumps([context, message])])
Пример #8
0
    def _send_request(self, target):
        #  Needed only in test env to give listener a chance to connect
        #  before request fires
        time.sleep(1)
        context = {}
        message = {'method': 'hello-world'}

        self.publisher.send_request(
            [zmq_names.CAST_FANOUT_TYPE,
             zmq_address.target_to_subscribe_filter(target),
             b"message",
             b"0000-0000",
             pickle.dumps(context),
             pickle.dumps(message)])
Пример #9
0
    def _send_request(self, target):
        #  Needed only in test env to give listener a chance to connect
        #  before request fires
        time.sleep(1)
        context = {}
        message = {'method': 'hello-world'}

        self.publisher.send_request([
            b"reply_id", b'',
            six.b(zmq_version.MESSAGE_VERSION),
            six.b(str(zmq_names.CAST_FANOUT_TYPE)),
            zmq_address.target_to_subscribe_filter(target), b"message_id",
            self.dumps([context, message])
        ])
    def send_request(self, request):
        if request.msg_type == zmq_names.CALL_TYPE:
            raise zmq_publisher_base.UnsupportedSendPattern(
                request.msg_type)

        if self.conf.use_pub_sub:
            routing_key = self.routing_table.get_routable_host(request.target) \
                if request.msg_type in zmq_names.DIRECT_TYPES else \
                zmq_address.target_to_subscribe_filter(request.target)
            self._do_send_request(request, routing_key)
        else:
            routing_keys = self.routing_table.get_all_hosts(request.target)
            for routing_key in routing_keys:
                self._do_send_request(request, routing_key)
Пример #11
0
    def send_request(self, request):
        if request.msg_type == zmq_names.CALL_TYPE:
            raise zmq_publisher_base.UnsupportedSendPattern(request.msg_type)

        if self.conf.use_pub_sub:
            routing_key = self.routing_table.get_routable_host(request.target) \
                if request.msg_type in zmq_names.DIRECT_TYPES else \
                zmq_address.target_to_subscribe_filter(request.target)
            self._do_send_request(request, routing_key)
        else:
            routing_keys = \
                [self.routing_table.get_routable_host(request.target)] \
                if request.msg_type in zmq_names.DIRECT_TYPES else \
                self.routing_table.get_all_hosts(request.target)
            for routing_key in routing_keys:
                self._do_send_request(request, routing_key)
Пример #12
0
    def _send_request(self, target):
        #  Needed only in test env to give listener a chance to connect
        #  before request fires
        time.sleep(1)
        context = {}
        message = {'method': 'hello-world'}

        self.publisher.send_request(
            [b"reply_id",
             b'',
             six.b(zmq_version.MESSAGE_VERSION),
             six.b(str(zmq_names.CAST_FANOUT_TYPE)),
             zmq_address.target_to_subscribe_filter(target),
             b"message_id",
             self.dumps([context, message])]
        )
    def send_request(self, multipart_message):

        envelope = multipart_message[zmq_names.MULTIPART_IDX_ENVELOPE]
        msg_type = envelope[zmq_names.FIELD_MSG_TYPE]
        target = envelope[zmq_names.FIELD_TARGET]
        message_id = envelope[zmq_names.FIELD_MSG_ID]
        if msg_type not in zmq_names.MULTISEND_TYPES:
            raise zmq_publisher_base.UnsupportedSendPattern(msg_type)

        topic_filter = zmq_address.target_to_subscribe_filter(target)

        self.socket.send(topic_filter, zmq.SNDMORE)
        self.socket.send(multipart_message[zmq_names.MULTIPART_IDX_BODY])

        LOG.debug("Publishing message [%(topic)s] %(message_id)s to "
                  "a target %(target)s "
                  % {"message_id": message_id,
                     "target": target,
                     "topic": topic_filter})
    def send_request(self, multipart_message):

        envelope = multipart_message[zmq_names.MULTIPART_IDX_ENVELOPE]
        msg_type = envelope[zmq_names.FIELD_MSG_TYPE]
        target = envelope[zmq_names.FIELD_TARGET]
        message_id = envelope[zmq_names.FIELD_MSG_ID]
        if msg_type not in zmq_names.MULTISEND_TYPES:
            raise zmq_publisher_base.UnsupportedSendPattern(msg_type)

        topic_filter = zmq_address.target_to_subscribe_filter(target)

        self.socket.send(topic_filter, zmq.SNDMORE)
        self.socket.send(multipart_message[zmq_names.MULTIPART_IDX_BODY])

        LOG.debug("Publishing message [%(topic)s] %(message_id)s to "
                  "a target %(target)s " % {
                      "message_id": message_id,
                      "target": target,
                      "topic": topic_filter
                  })
    def send_request(self, request):
        if request.msg_type == zmq_names.CALL_TYPE:
            raise zmq_publisher_base.UnsupportedSendPattern(
                request.msg_type)

        routing_key = self.routing_table.get_routable_host(request.target) \
            if request.msg_type in zmq_names.DIRECT_TYPES else \
            zmq_address.target_to_subscribe_filter(request.target)

        self.socket.send(b'', zmq.SNDMORE)
        self.socket.send(six.b(str(request.msg_type)), zmq.SNDMORE)
        self.socket.send(six.b(routing_key), zmq.SNDMORE)
        self.socket.send(six.b(request.message_id), zmq.SNDMORE)
        self.socket.send_pyobj(request.context, zmq.SNDMORE)
        self.socket.send_pyobj(request.message)

        LOG.debug("->[proxy:%(addr)s] Sending message_id %(message)s to "
                  "a target %(target)s",
                  {"message": request.message_id,
                   "target": request.target,
                   "addr": list(self.socket.connections)})
Пример #16
0
 def _generate_identity(self):
     return six.b(self.conf.oslo_messaging_zmq.rpc_zmq_host + '/') + \
         zmq_address.target_to_subscribe_filter(self.target) + \
         six.b('/' + str(uuid.uuid4()))
Пример #17
0
 def topic_filter(self):
     return zmq_address.target_to_subscribe_filter(self._target)
Пример #18
0
 def _generate_identity(self):
     return six.b(self.conf.oslo_messaging_zmq.rpc_zmq_host + '/') + \
         zmq_address.target_to_subscribe_filter(self.target) + \
         six.b('/' + str(uuid.uuid4()))
Пример #19
0
 def _subscribe_to_topic(self):
     topic_filter = zmq_address.target_to_subscribe_filter(self.target)
     self.socket.setsockopt(zmq.SUBSCRIBE, topic_filter)
     LOG.debug("[%(host)s] Subscribing to topic %(filter)s",
               {"host": self.host, "filter": topic_filter})
 def send_request(self, socket, request):
     request.routing_key = \
         zmq_address.target_to_subscribe_filter(request.target)
     self.sender.send(socket, request)
 def send_request(self, socket, request):
     request.routing_key = \
         zmq_address.target_to_subscribe_filter(request.target)
     self.sender.send(socket, request)