private async void resubmitSelectedMessagesInBatchModeToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
if (messagesDataGridView.SelectedRows.Count <= 0)
{
return;
}
string entityPath;
using (var form = new SelectEntityForm(SelectEntityDialogTitle, SelectEntityGrouperTitle, SelectEntityLabelText))
{
if (form.ShowDialog() != DialogResult.OK)
{
return;
}
if (string.IsNullOrWhiteSpace(form.Path))
{
return;
}
entityPath = form.Path;
}
var sent = 0;
var messageSender = await serviceBusHelper.MessagingFactory.CreateMessageSenderAsync(entityPath);
var messages = messagesDataGridView.SelectedRows.Cast<DataGridViewRow>().Select(r =>
{
BodyType bodyType;
var message = r.DataBoundItem as BrokeredMessage;
serviceBusHelper.GetMessageText(message, out bodyType);
if (bodyType == BodyType.Wcf)
{
var wcfUri = serviceBusHelper.IsCloudNamespace ?
new Uri(serviceBusHelper.NamespaceUri, messageSender.Path) :
new UriBuilder
{
Host = serviceBusHelper.NamespaceUri.Host,
Path = string.Format("{0}/{1}", serviceBusHelper.NamespaceUri.AbsolutePath, messageSender.Path),
Scheme = "sb"
}.Uri;
return serviceBusHelper.CreateMessageForWcfReceiver(message,
0,
false,
false,
wcfUri);
}
return serviceBusHelper.CreateMessageForApiReceiver(message,
0,
false,
false,
false,
bodyType,
null);
});
IEnumerable<BrokeredMessage> brokeredMessages = messages as IList<BrokeredMessage> ?? messages.ToList();
if (brokeredMessages.Any())
{
sent = brokeredMessages.Count();
await messageSender.SendBatchAsync(brokeredMessages);
}
writeToLog(string.Format(MessageSentMessage, sent, entityPath));
}
catch (Exception ex)
{
HandleException(ex);
}
}