Зависимость c # sharp proejct .net 4.5, должна взаимодействовать с очередью сообщений Azure

В настоящее время я работаю над проектом, который зависит от .net 4.5, поэтому я вынужден использовать Microsoft.Servicebus - и, следовательно, фабрику сообщений.

Создание объекта messagefactory, похоже, не является проблемой, но создание отправителя сообщения, похоже, здесь.

Я не уверен, какой путь к сущности для моей очереди сообщений Azure, и не знаю, как мне его искать?

Я инициализировал свою фабрику сообщений как таковую;

public Microsoft.ServiceBus.Messaging.MessagingFactory client = Microsoft.ServiceBus.Messaging.MessagingFactory.CreateFromConnectionString(ServiceBusConnectString);

Где servicebusconnectionstring - это основная строка подключения, извлеченная из очереди Azure, или следуя этому руководству: https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-get-start-with-queues#1-create-a-namespace-using-the-azure-portal

Отправитель сообщения создается как таковой:

Microsoft.ServiceBus.Messaging.MessageSender sender = client.CreateMessageSender(destinationQueue,queueName);

Опять же destionationQueue и 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 - это функция журнала, которую я использую, и последнее регистрируемое сообщение - «Отправка сообщения в лазурь», что означает, что что-то идет не так, когда я его отправляю. даже catch не ловит исключение? ..

В чем может быть проблема?

Я неправильно использую отправителя?


person nano    schedule 01.06.2018    source источник


Ответы (1)


Я не уверен, каков путь enity для моей очереди сообщений Azure, и не знаю, как его искать?

Если мы хотим создать очередь, MessageSender, мы могли бы использовать следующий код.

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>();
});

IntegrationLogger - это функция журнала, которую я использую, и последнее регистрируемое сообщение - «Отправка сообщения в лазурь», что означает, что что-то идет не так, когда я его отправляю. даже улов не ловит exepetion? ..

В вашем случае я рекомендую вам добавить информацию журнала, чтобы проверить, есть ли какие-либо исключения во время отправки сообщения.

 try
 {
   IntegrationLogger.Write(LogLevel.Verbose, "Sending message to azure");
   sender.Send(message);
   //add log
   IntegrationLogger.Write(LogLevel.Verbose, "Send message successfully"); 
 }
person Tom Sun - MSFT    schedule 05.06.2018