c#sharp proejct.net 4.5依赖项应与azure消息队列交互
我目前正在从事一个依赖于.NET4.5的项目,这就是为什么我不得不使用Microsoft.Servicebus,从而使用MessageFactory 创建messagefactory对象似乎不是问题,但创建消息发送者似乎是问题所在 我不确定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
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>();
});