public static Settings CreateSettings(string connectionString, string path, string transferqueue, VSCM_ServiceBusMessage message) { var settings = new Settings { ConnectionString = connectionString, Path = path, TransferQueue = transferqueue, ConnectivityMode = ConnectivityMode.Tcp, SenderCount = 10, TransportType = TransportType.NetMessaging, Messages = new ConcurrentQueue <BrokeredMessage>(), ErrorMessages = new ConcurrentQueue <ErrorMessage>() }; var partitionKey = Convert.ToString(Guid.NewGuid()); var messages = new List <VSCM_ServiceBusMessage> { message }; var brokeredMessages = GetBrokeredMessages(partitionKey, messages); foreach (var brokeredMessage in brokeredMessages) { settings.Messages.Enqueue(brokeredMessage); } return(settings); }
private ServiceBusReader.Models.MessageReadResponse ReceiveMessage(object sender, VSCM_ServiceBusMessage message) { _messages.Enqueue(message); Console.WriteLine("Current Message Count: " + _messages.Count); //return new ServiceBusReader.Models.MessageReadResponse //{ // ProcessSuccessful = true //}; return(new ServiceBusReader.Models.MessageReadResponse { ProcessSuccessful = false, DeadLetterReason = "Failed processing", DeadLetterErrorDescription = "Test" }); }
/// <summary> /// Write a single message, to the Visible Service Bus /// </summary> /// <param name="path">Queue/Topic name to write the message to</param> /// <param name="transferqueue">Queue name to use for transactions</param> /// <param name="message">Message to be written to the Visible Service Bus</param> /// <returns>List of any non accounted for errors thrown</returns> public List <ErrorMessage> WriteMessageToServiceBus(string path, string transferqueue, VSCM_ServiceBusMessage message) { var errors = new List <ErrorMessage>(); using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { Timeout = new TimeSpan(1, 0, 0, 0) })) { var settings = Settings.CreateSettings(ConfigurationManager.AppSettings.Get("PrimaryConnectionString"), path, transferqueue, message); var factory = MessagingFactory.CreateFromConnectionString(settings.ConnectionString); factory.RetryPolicy = RetryPolicy.NoRetry; var sender = factory.CreateMessageSender(settings.Path, settings.TransferQueue); sender.RetryPolicy = RetryPolicy.NoRetry; errors.AddRange(SynchronouslyWrite(settings, sender)); if (!settings.ErrorMessages.IsEmpty) { scope.Dispose(); } else { scope.Complete(); } } if (errors.Any()) { using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { Timeout = new TimeSpan(1, 0, 0, 0) })) { var settings = Settings.CreateSettings(ConfigurationManager.AppSettings.Get("SecondaryConnectionString"), path, transferqueue, message); var factory = MessagingFactory.CreateFromConnectionString(settings.ConnectionString); factory.RetryPolicy = RetryPolicy.NoRetry; var sender = factory.CreateMessageSender(settings.Path, settings.TransferQueue); sender.RetryPolicy = RetryPolicy.NoRetry; errors.AddRange(SynchronouslyWrite(settings, sender)); if (!settings.ErrorMessages.IsEmpty) { scope.Dispose(); } else { scope.Complete(); } } } return(errors); }