def METHOD_NAME(user, owner, dataset_id):
    with producers[connection].acquire(block=True, timeout=broker_socket_timeout) as producer:
        maybe_declare(queue_dataset_viewers, producer.channel)
        payload = {"viewer": user, "owner_dataset": owner, "dataset_id": dataset_id}
        producer.publish(
            payload,
            exchange="geonode",
            serializer=task_serializer,
            routing_key="geonode.viewer",
            timeout=broker_socket_timeout,
        )
        producer.release()