void Dequeue(object arg) { Uri bufferAddress = arg as Uri; Debug.Assert(bufferAddress != null); MessageBufferClient bufferClient = MessageBufferClient.GetMessageBuffer(m_Credential, bufferAddress); while (true) { Message message = null; try { message = bufferClient.Retrieve(); } catch (TimeoutException) { Trace.WriteLine("Timed out before retirieving message"); continue; } if (message.Headers.Action == CloseAction) { return; } else { Dispatch(message); } } }
void DeleteBuffers(ServiceBusTreeNode treeNode) { if (treeNode.ServiceBusNode != null) { if (treeNode.ServiceBusNode.Policy != null) { if (treeNode.ServiceBusNode.Policy is MessageBufferPolicy) { string nodeAddress = treeNode.ServiceBusNode.Address; nodeAddress = nodeAddress.Replace(@"sb://", @"https://"); TransportClientEndpointBehavior credential = Graphs[ServiceNamespace.ToLower()].Credential; Uri address = new Uri(nodeAddress); try { MessageBufferClient.GetMessageBuffer(credential, address).DeleteMessageBuffer(); } catch {} } } } foreach (TreeNode node in treeNode.Nodes) { DeleteBuffers(node as ServiceBusTreeNode); } }
private MessageBufferClient GetMessageBufferClient() { TransportClientEndpointBehavior behavior = GetACSSecurity(txtIssuerName.Text, txtIssuerKey.Text); Uri messageBufferUri = GetMessageBufferUri(); return(MessageBufferClient.GetMessageBuffer(behavior, messageBufferUri)); }
private MessageBufferClient GetOrCreateQueue(TransportClientEndpointBehavior sharedSecredServiceBusCredential, Uri queueUri, ref MessageBufferPolicy queuePolicy) { MessageBufferClient client; try { client = MessageBufferClient.GetMessageBuffer(sharedSecredServiceBusCredential, queueUri); MessageBufferPolicy currentQueuePolicy = client.GetPolicy(); queuePolicy = currentQueuePolicy; // Queue already exists. return(client); } //catch (EndpointNotFoundException) catch (FaultException) { // Exception when retrieving the current queue policy. // Queue Not found; absorb and make a new queue below. // Other exceptions get bubbled up. } catch (Exception) { } try { client = MessageBufferClient.CreateMessageBuffer(sharedSecredServiceBusCredential, queueUri, queuePolicy); } catch (Exception) { throw; } //Created new Queue. return(client); }
void OnDragDrop(object sender, DragEventArgs args) { Cursor.Current = Cursors.Default; Debug.Assert(m_DraggedNode != null); ServiceBusTreeNode targetNode = GetTargetNode(args); if (targetNode.ServiceBusNode == null) { return; } if (targetNode.ServiceBusNode.Policy != null)//A router or a buffer { if (targetNode.ServiceBusNode.Policy is RouterPolicy) { Trace.WriteLine("Droped at: " + targetNode.Text); string draggedAddress = m_DraggedNode.ServiceBusNode.Address; draggedAddress = draggedAddress.Replace(@"https://", @"sb://"); draggedAddress = draggedAddress.Replace(@"http://", @"sb://"); string targetAddress = targetNode.ServiceBusNode.Address; targetAddress = targetAddress.Replace(@"https://", @"sb://"); targetAddress = targetAddress.Replace(@"http://", @"sb://"); TransportClientEndpointBehavior credential = Graphs[ServiceNamespace.ToLower()].Credential; Uri draggedUri = new Uri(draggedAddress); Uri targetUri = new Uri(targetAddress); try { RouterClient targetClient = RouterManagementClient.GetRouter(credential, targetUri); if (m_DraggedNode.ServiceBusNode.Policy is RouterPolicy) { RouterClient draggedClient = RouterManagementClient.GetRouter(credential, draggedUri); draggedClient.SubscribeToRouter(targetClient, TimeSpan.MaxValue); } else { MessageBufferClient draggedClient = MessageBufferClient.GetMessageBuffer(credential, draggedUri); /* TODO Restore on next release * draggedClient.SubscribeToRouter(targetClient,TimeSpan.MaxValue); */ } OnExplore(this, EventArgs.Empty); m_ServiceBusTree.SelectedNode = targetNode; m_ServiceBusTree.Select(); } catch (Exception exception) { MessageBox.Show("Unable to subscribe: " + exception.Message, "Service Bus Explorer", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } m_DraggedNode = null; }
public new T CreateChannel() { Debug.Assert(Endpoint.Binding is NetOnewayRelayBinding); ServiceBusHelper.VerifyBuffer(Endpoint.Address.Uri.AbsoluteUri, ServiceBusCredentials); m_BufferClient = MessageBufferClient.GetMessageBuffer(ServiceBusCredentials, Endpoint.Address.Uri); return(base.CreateChannel()); }
void SendCloseMessages() { foreach (Uri bufferAddress in m_BufferAddresses) { MessageBufferClient bufferClient = MessageBufferClient.GetMessageBuffer(m_Credential, bufferAddress); Message message = Message.CreateMessage(MessageVersion.Default, CloseAction); bufferClient.Send(message); } }
public static void PurgeBuffer(Uri bufferAddress, TransportClientEndpointBehavior credential) { Debug.Assert(BufferExists(bufferAddress, credential)); MessageBufferClient client = MessageBufferClient.GetMessageBuffer(credential, bufferAddress); MessageBufferPolicy policy = client.GetPolicy(); client.DeleteMessageBuffer(); MessageBufferClient.CreateMessageBuffer(credential, bufferAddress, policy); }
protected override T CreateChannel() { Debug.Assert(Endpoint.Binding is NetOnewayRelayBinding); m_BufferAddress = new Uri("https://" + Endpoint.Address.Uri.Host + Endpoint.Address.Uri.LocalPath); ServiceBusHelper.VerifyBuffer(m_BufferAddress.AbsoluteUri, Credential); m_BufferClient = MessageBufferClient.GetMessageBuffer(Credential, m_BufferAddress); return(base.CreateChannel()); }
MessageBufferPolicy GetBufferPolicy(string address) { if (address.StartsWith(@"sb://")) { return(null); } Uri bufferAddress = new Uri(address); MessageBufferClient client = MessageBufferClient.GetMessageBuffer(Credential, bufferAddress); return(client.GetPolicy()); }
static void CreateBuffer(string bufferAddress, MessageBufferPolicy policy, TransportClientEndpointBehavior credential) { if (bufferAddress.EndsWith("/") == false) { bufferAddress += "/"; } Uri address = new Uri(bufferAddress); if (BufferExists(address, credential)) { MessageBufferClient client = MessageBufferClient.GetMessageBuffer(credential, address); client.DeleteMessageBuffer(); } MessageBufferClient.CreateMessageBuffer(credential, address, policy); }
void ApplyPolicy(MessageBufferPolicy policy) { try { Uri address = new Uri(RealAddress.AbsoluteUri.Replace(@"sb://", @"https://")); MessageBufferClient client = MessageBufferClient.GetMessageBuffer(Credential, address); client.DeleteMessageBuffer(); MessageBufferClient.CreateMessageBuffer(Credential, address, policy); Explore(); } catch (Exception exception) { MessageBox.Show("Error applying change: " + exception.Message, "Service Bus Explorer", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
internal static bool BufferExists(Uri bufferAddress, TransportClientEndpointBehavior credential) { try { MessageBufferClient client = MessageBufferClient.GetMessageBuffer(credential, bufferAddress); MessageBufferPolicy policy = client.GetPolicy(); if (policy.TransportProtection != TransportProtectionPolicy.AllPaths) { throw new InvalidOperationException("Buffer must be configured for transport protection"); } return(true); } catch (FaultException exception) { Debug.Assert(exception.Message == "Policy could not be retrieved: ContentType is incorrect"); } return(false); }
public static void DeleteBuffer(string bufferAddress, string secret) { if (bufferAddress.EndsWith("/") == false) { bufferAddress += "/"; } Uri address = new Uri(bufferAddress); TransportClientEndpointBehavior credential = new TransportClientEndpointBehavior(); credential.TokenProvider = TokenProvider.CreateSharedSecretTokenProvider(DefaultIssuer, secret); if (BufferExists(address, credential)) { MessageBufferClient client = MessageBufferClient.GetMessageBuffer(credential, address); client.DeleteMessageBuffer(); } }
void OnDelete(object sender, EventArgs e) { DialogResult result = MessageBox.Show("Are you sure you want to delete the buffer?", "Service Bus Explorer", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation); if (result == DialogResult.No) { return; } try { Uri address = new Uri(RealAddress.AbsoluteUri.Replace(@"sb://", @"https://")); MessageBufferClient client = MessageBufferClient.GetMessageBuffer(Credential, address); client.DeleteMessageBuffer(); Explore(); } catch (Exception exception) { MessageBox.Show("Error deleting buffer: " + exception.Message, "Service Bus Explorer", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
void Dequeue(object arg) { Uri bufferAddress = arg as Uri; Debug.Assert(bufferAddress != null); MessageBufferClient bufferClient = MessageBufferClient.GetMessageBuffer(m_Credential, bufferAddress); while (true) { Message message = bufferClient.Retrieve(); if (message.Headers.Action == CloseAction) { return; } else { Dispatch(message); } } }
public static void DeleteBuffer(string bufferAddress, string secret) { if (bufferAddress.EndsWith("/") == false) { bufferAddress += "/"; } Uri address = new Uri(bufferAddress); TransportClientEndpointBehavior credential = new TransportClientEndpointBehavior(); credential.CredentialType = TransportClientCredentialType.SharedSecret; credential.Credentials.SharedSecret.IssuerName = DefaultIssuer; credential.Credentials.SharedSecret.IssuerSecret = secret; if (BufferExists(address, credential)) { MessageBufferClient client = MessageBufferClient.GetMessageBuffer(credential, address); client.DeleteMessageBuffer(); } }
void OnPurge(object sender, EventArgs e) { DialogResult result = MessageBox.Show("Are you sure you want to remove all messages?", "Service Bus Explorer", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation); if (result == DialogResult.No) { return; } try { Uri address = new Uri(RealAddress.AbsoluteUri.Replace(@"sb://", @"https://")); MessageBufferClient client = MessageBufferClient.GetMessageBuffer(Credential, address); MessageBufferPolicy policy = client.GetPolicy(); ApplyPolicy(policy); } catch (Exception exception) { MessageBox.Show("Error purging buffer: " + exception.Message, "Service Bus Explorer", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private MessageBufferClient GetOrCreateQueue(TransportClientEndpointBehavior sharedSecredServiceBusCredential, Uri queueUri, ref MessageBufferPolicy queuePolicy) { MessageBufferClient client; try { client = MessageBufferClient.GetMessageBuffer(sharedSecredServiceBusCredential, queueUri); queuePolicy = client.GetPolicy(); Console.WriteLine("Message buffer already exists at '{0}'.", client.MessageBufferUri); return(client); } catch (FaultException e) { // Not found. Ignore and make a new queue below. // Other exceptions get bubbled up. } client = MessageBufferClient.CreateMessageBuffer(sharedSecredServiceBusCredential, queueUri, queuePolicy); queuePolicy = client.GetPolicy(); Console.WriteLine("Message buffer created at '{0}'.", client.MessageBufferUri); return(client); }