paolosalvatori / ServiceBusExplorer

The Service Bus Explorer allows users to connect to a Service Bus namespace and administer messaging entities in an easy manner. The tool provides advanced features like import/export functionality or the ability to test topic, queues, subscriptions, relay services, notification hubs and events hubs.
MIT License
2.03k stars 588 forks source link

Cannot view entire value in "Message Custom Properties" #57

Closed tdoman closed 8 years ago

tdoman commented 8 years ago

Sometimes we dead letter messages ourselves due to an exception. We include the exception detail information in the dead letter message as a custom property but we can't view it in the "Message Custom Properties" section after peeking. This would be a great enhancement for our troubleshooting efforts using SBE.

paolosalvatori commented 8 years ago

Hi Tom This sounds more like a bug than an improvement :) The codebase of the control used to show deadletter messages should be the same of the control used to show normal messages. I'll check when I have some time. I'm pretty busy at the moment, I'll do my best to look at it... or maybe @SeanFeldman can fix that :) Ciao Paolo

SeanFeldman commented 8 years ago

@tdoman are you using BrokeredMessage.DeadLetterAsync(string deadLetterReason, string deadLetterErrorDescription) or BrokeredMessage.DeadLetterAsync(IDictionary<string, object> propertiesToModify)

Let me confirm if I understand what you do. Assuming you're using the (string, string) version, you don't see deadLetterReason customer header with deadLetterErrorDescription message? If that's not the case, please elaborate on steps to reproduce. Thank you.

SeanFeldman commented 8 years ago

@tdoman I quickly ran the test with both API calls, and both work fine with the latest (3.4.0) SBE. Using BrokeredMessage.DeadLetterAsync(IDictionary<string, object> propertiesToModify) image

Using BrokeredMessage.DeadLetterAsync(string deadLetterReason, string deadLetterErrorDescription) image

tdoman commented 8 years ago

@SeanFeldman Yep, that's exactly what we're doing but I should have been clearer. When we get an exception, we are passing ex.ToString() in as the DeadLetterErrorDescription. So, at the very least, we'd like to be able to right-click and copy the value data to an editor or, at best, have the ability to view the entire custom property value within the SBE.

SeanFeldman commented 8 years ago

@tdoman got it. You can already do that. Select the message, double click it for "Edit and Resubmit" (not quite accurate, but still), select the row/column you need to copy, ctrl-c et voila! Attached a small visualization. Is this what you wanted?

copy-header-value

sorry, 4k screen area capture got messed up. Need to find a better utility.

tdoman commented 8 years ago

@SeanFeldman yep, that's it, fantastic! that's what we need to inspect those stack traces we put in there (hopefully they never exceed the max message size) AND I didn't realize that "edit and resubmit" feature was even in the SBE. that's useful in it's own right, thanks a lot, i appreciate the prompt and helpful feedback!

SeanFeldman commented 8 years ago

@tdoman :) One word of caution with exceptions and headers - you only can use 64K for headers, not the full message size. As long as you guessed against that, you should be good.

@paolosalvatori good to close this issue

paolosalvatori commented 8 years ago

Hi Tom I used to be in the BizTalk Customer Advisory Team so I tried to implement the Message Repair and Resubmit pattern that was available in BizTalk ESB. That's why you can right click a single message, edit and resubmit it. As you probably realized by right clicking a message, you can also save the message to a text file in JSON format, including custom properties. Last but not least, you can also select multiple messages and resubmit them in a batch mode or save them to a text file as a JSON array. Hope this helps :) Ciao Paolo