NServiceBus icon indicating copy to clipboard operation
NServiceBus copied to clipboard

Allow the endpoint to use different DataBus types when forwarding to audit or error Qs

Open mauroservienti opened this issue 9 years ago • 4 comments

In a system the DataBus implementation is shared across all the endpoints that needs to talk to each other and is also used by the error and audit features.

The issue when sharing the chosen DataBus between endpoint normal operations and error and audit management is that these 3 concepts have very different cleanup policies:

  • normal endpoint operations: when the message is processed
  • audit: as the message expires if the audit si done via SC or when Ops decide
  • error: potentially never as an error message can be retried at any point in time or archived but never deleted

/cc @ramonsmits

mauroservienti avatar Dec 09 '15 17:12 mauroservienti

ramon [5:51 PM] @here : When a message is read from the audit queue by ServiceControl, does it store the blobs from the databus in the message?

andreas [5:52 PM] no it does not, pretty sure we just ignore the databus properties

ramon [5:52 PM] @andreas: So its stores the wire message body?

andreas [5:52 PM] yes

​[5:52] so databus data is gone

mike [5:53 PM] It doesn't even get deserialized.

​[5:53](kind of). If it's not binary we convert it into a string

andreas [5:53 PM] huh, we're not reading the data part of databus props?

mike [5:56 PM] The body we get over the wire is pushed into Body Storage as a binary stream. IF it's non-binary we also convert that stream into a string and add it to the Raven Document for full-text search. If databus needs special treatment, it's not there

andreas [5:57 PM] yea, databus property content needs to be read from the configured databus and we don't do that (SC doesn't have any settings to configure a databus)

mike [5:57 PM] It also doesn't necessarily have a configured deserializer (although multi-deserializers goes a way to resolving that).

andreas [5:58 PM] but databus is one more level of indirection

mike [5:58 PM] And we don't have the class definition of the message type so any attributes are lost

andreas [5:58 PM] http://docs.particular.net/nservicebus/messaging/databus DataBus feature

mike [5:58 PM] Can we even tell it's a databus property?

andreas [5:58 PM] yes we can

​[5:58] and there is also headers to tell

​[5:59] not convicened that we need to store the actual databus content

mike [5:59 PM] And given that the data is already in the databus do we need to ingest it?

andreas [5:59 PM] since that's most likely large binary stuff

mike [5:59 PM] Or should SC tell the Databus what to do with it?

​[5:59] i.e. Should we have an SC-Controlled-Expiration-Policy for DataBus

andreas [6:00 PM] I'd say we just ignore databus props like we do today

​[6:00] perhaps we can flag messages as containing databus properties in SI or something

mike [6:00 PM] That's problematic. If the Databus data expires and then you retry the message

​[6:01] Although to be fair, it's no different than if the endpoint was down for a bit and the databus expires the message

ramon [6:02 PM] @mike @andreas Is this really a ServiceControl concern?

​[6:02] Shouldn't the databus provider be responsible for purging and audit hooks?

mikeminutillo avatar Dec 10 '15 10:12 mikeminutillo

@mauroservienti since audit and error involves SC like you mentioned would it make sense to move this issue to platform development and flesh it out there?

danielmarbach avatar May 18 '16 14:05 danielmarbach

moved to https://github.com/Particular/PlatformDevelopment/issues/879

particularbot avatar Jul 13 '16 13:07 particularbot

The issue was resolved for the Azure Databus implementation, however, the problem persists in the FileShareDatabus. Re-opening this issue.

HEskandari avatar Jun 02 '21 09:06 HEskandari