""" MQProducer """ from __future__ import absolute_import from __future__ import division from __future__ import print_function from DIRAC import gLogger from DIRAC.Resources.MessageQueue.Utilities import getDestinationAddress, getMQService class MQProducer(object): def __init__(self, mqManager, mqURI, producerId): self._connectionManager = mqManager self._mqURI = mqURI self._destination = getDestinationAddress(self._mqURI) self._mqService = getMQService(self._mqURI) self._id = producerId self.log = gLogger.getSubLogger(self.__class__.__name__) def put(self, msg): result = self._connectionManager.getConnector(self._mqService) if result["OK"]: connector = result["Value"] return connector.put(message=msg, parameters={"destination": self._destination}) return result def close(self): """Function closes the connection for this client. The producer id is removed from the connection storage. It is not guaranteed that the connection will be removed cause other messengers can be still using it. Returns: S_OK or S_ERROR: Error appears in case if the connection was already closed for this producer. """ return self._connectionManager.stopConnection(mqURI=self._mqURI, messengerId=self._id)