Sto cercando una buona soluzione per registrare il messaggio non riuscito, subito dopo il superamento del limite di tentativi, senza avere un accordo con la coda degli errori. Quello che ho trovato finora:Come registrare il messaggio non riuscito in masstransit?
- posso ereditare da InMemoryInboundMessageTracker e sovrascrivere IsRetryLimitExceeded, ma a questo punto non ci sono informazioni su messaggio stesso, tranne id.
- posso realizzare IInboundMessageInterceptor e ottenere IConsumeContext in Pre/PostDispatch, ma a questo punto non ci sono informazioni sul successo/fallimento.
Così come una soluzione, posso ottenere IConsumeContext in preDispatch metterlo in una sorta di una cache quindi ottenere fuori di una cache in IsRetryLimitExceeded quando limite di tentativi di superamento.
metodi sono chiamati a tale ordine: IsRetryLimitExceeded -> preDispatch -> PostDispatch
Quindi non riesco a trovare un buon posto per rimuovere messaggio elaborato con successo da una cache.
Ovviamente posso usare una cache con dimensioni ridotte ma questa intera soluzione sembra essere strana.
Sarebbe gradita qualsiasi riflessione in merito.
Sì, è il caso di attuazione/imperativi IsRetryLimitExceeded. – amstix
È nell'interfaccia _IInboundMessageTracker_. Non ci sono informazioni sul contenuto del messaggio e del messaggio tranne messageId, ma ci sono un paio di metodi utili _MessageWasReceivedSuccessfully_ e _MessageWasMovedToErrorQueue_ che possono essere utilizzati per rimuovere IConsumeContext da una cache. – amstix