c#sharp proejct.net 4.5依赖项应与azure消息队列交互

c#sharp proejct.net 4.5依赖项应与azure消息队列交互,c#,azure,azureservicebus,azure-servicebus-queues,C#,Azure,Azureservicebus,Azure Servicebus Queues,我目前正在从事一个依赖于.NET4.5的项目,这就是为什么我不得不使用Microsoft.Servicebus,从而使用MessageFactory 创建messagefactory对象似乎不是问题,但创建消息发送者似乎是问题所在 我不确定azure消息队列的实体路径是什么,也不知道应该如何查找它 我初始化了我的消息工厂 public Microsoft.ServiceBus.Messaging.MessagingFactory client = Microsoft.ServiceBus.Mes

我目前正在从事一个依赖于.NET4.5的项目,这就是为什么我不得不使用Microsoft.Servicebus,从而使用MessageFactory

创建messagefactory对象似乎不是问题,但创建消息发送者似乎是问题所在

我不确定azure消息队列的实体路径是什么,也不知道应该如何查找它

我初始化了我的消息工厂

public Microsoft.ServiceBus.Messaging.MessagingFactory client = Microsoft.ServiceBus.Messaging.MessagingFactory.CreateFromConnectionString(ServiceBusConnectString);
其中servicebusconnectionstring是从azure队列中提取的主conenctionstring,或按照以下指南提取:

消息发送方的创建方式如下:

Microsoft.ServiceBus.Messaging.MessageSender sender = client.CreateMessageSender(destinationQueue,queueName);
Microsoft.ServiceBus.Messaging.BrokeredMessage message = new Microsoft.ServiceBus.Messaging.BrokeredMessage(e.ToXml());
同样,DestinationQueue和queueName是从azure定义的字符串

要发送的消息是这样创建的:

Microsoft.ServiceBus.Messaging.MessageSender sender = client.CreateMessageSender(destinationQueue,queueName);
Microsoft.ServiceBus.Messaging.BrokeredMessage message = new Microsoft.ServiceBus.Messaging.BrokeredMessage(e.ToXml());
e
只是一个对象,它具有publich函数,可以将其转换为xml字符串

以下是我发送信息的地方:

try
{
   IntegrationLogger.Write(LogLevel.Verbose, "Sending message to azure");
   sender.Send(message);
}
catch(System.Exception ex)
{
  if(ex is System.TimeoutException)
  {
    IntegrationLogger.Write(LogLevel.Error, "Timeout exeption");
  }

  if (ex is System.ArgumentException)
  {
    IntegrationLogger.Write(LogLevel.Error, "Message is empty");
  }

}
IntegrationLogger
是我使用的一个日志函数,记录的最后一条消息是“向azure发送消息”,这意味着我发送消息时出现了一些错误。 即使捕获也不能捕获异常

这里有什么问题

我是否错误地使用了发件人

我不确定我的azure消息队列的enity路径是什么,也不知道应该如何查找它

如果我们想创建队列,我们可以使用以下代码

var sender = client.CreateMessageSender(queueName);
我们还可以使用queueclient发送和接收代理消息

var client = QueueClient.CreateFromConnectionString("servicebus connection string", queueName);

// how to send message
var sendMessage = new BrokeredMessage(data);
client.Send(sendMessage);

//how to receive message
client.OnMessage(message =>
{
     var dataInfo = message.GetBody<T>();
});