       ;;    maximum number of retries for an event. After the retries, the delete event will be
       ;;    considered as a success.
       (= status 404)
-      (if (>= retry-count (count (queue-config/rabbit-mq-ttls)))
+      (if (< retry-count num-retries-delete-not-found)
+        (info (format (str "Received a response with status code [404] and the following "
+                           "response body when deleting the virtual granule [%s] : [%s]. "
+                           "The delete request will be retried.")
+                      granule-ur (pr-str body)))
         (info (format (str "The number of retries has exceeded the maximum retry count."
-                           "The delete event for the virtual granule [%s] will be ignored") granule-ur))
-        (errors/internal-error!
-          (format (str "Received a response with status code [404] and the following response body "
-                       "when deleting the virtual granule [%s] : [%s]. The delete request will be "
-                       "retried.")
-                  granule-ur (pr-str body))))
+                           "The delete event for the virtual granule [%s] will be ignored")
+                      granule-ur)))
 
       ;; Conflict (status code 409)
       ;; This would occurs if a delete event with lower revision-id is consumed after an event with

      (errors/internal-error!
        (format (str "Received unexpected status code [%s] and the following response when "
                     "deleting the virtual granule [%s] : [%s]")
                status granule-ur (pr-str response))))))

(defn-timed apply-source-granule-delete-event
  "Applies a source granule delete event to the virtual granules"
  [context {:keys [provider-id revision-id granule-ur entry-title retry-count]}]
  (let [vp-config (svm/source-to-virtual-product-mapping
                    [(svm/provider-alias->provider-id provider-id) entry-title])]
    (doseq [virtual-coll (:virtual-collections vp-config)]
      (let [new-granule-ur (svm/generate-granule-ur provider-id
                                                    (:short-name vp-config)
                                                    (:short-name virtual-coll)
                                                    granule-ur)
            resp (ingest/delete-concept context {:provider-id provider-id
                                                 :concept-type :granule
                                                 :native-id new-granule-ur}
                                        (build-ingest-headers revision-id) true)]
        (handle-delete-response resp new-granule-ur retry-count)))))

(defmethod handle-ingest-event :concept-delete
  [context event]

            [cmr.common.util :as u :refer [defn-timed]]
            [cmr.virtual-product.config :as config]
            [cmr.virtual-product.data.source-to-virtual-mapping :as svm]))

(def ^:private num-retries-delete-not-found
  "Number of retries for not found error during deletion of source granule"
  2)

(defmulti handle-ingest-event
  "Handles an ingest event. Checks if it is an event that should be applied to virtual granules. If
