Granularity of failed messages in ServicePulse

Some of our failed messages groups (regardless of how they are grouped) exceed 10K messages, making it very hard to handle manually.

As we are trying to clean up the error queue I’m looking for ways to get a more granular grouping/filtering of the messages - is there any way to do this? Any tips are highly appreciated :pray:
The kind of grouping/filtering I am looking for is preferably:

  1. “NServiceBus.ExceptionInfo.Message”
  2. Querying the content of “message body”
  3. Specific time ranges

I have tried querying the underlying RavenDB using the RavenDB Management Studio, assuming that the error messages can be deleted directly in the database. My attempt was to achieve pt. 2 above using this query on the Failed Messages: ProcessingAttempts.MessageMetadata.Body:<searchTerm>. This returned the error Error querying index Index 42 is invalid, out of 506 indexing attempts, 506 has failed.. I have never used the RavenDB Management Studio or the Lucene query syntax before, so any tips are welcome!

And I know I know, the error messages should definitely have been handled sooner, but here we are… :melting_face:

ServiceInsight provides a query field. If you allow full-text indexing then you can search on data from the message body and headers.

That might be a good alternative depending on the number of matching messages.

Be careful with queries in RavenDB Studio. You might accidentally auto-create indexes which can hurt ingestion performance.

Thank you! How would I search for the string "Property": "Something"? Do I need to escape some characters?

Also, is it possible to (bulk) delete messages in ServiceInsight?

Headers values and messages bodies are indexed. You can search for messages that have a header value “Something” by searching on “Something”.

This query value is case-sensitive and must not contain whitespace:

For example, if you would search for “Particular Software” this would return all messages that have “Particular” OR “Software” in their body or header values.

Unfortunately, it’s not possible to search for a specific header key value, perform an AND, or use wildcards

No, for that you would need to use ServicePulse and specifically its grouping feature to either retry or archive large groups of messages.