зависимость c # sharp proejct .net 4.5, должна взаимодействовать с лазурной очередью сообщений - PullRequest
0 голосов
/ 01 июня 2018

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

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

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

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

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

Где servicebusconnectionstring, это основная строка conenctionstring, извлеченная из очереди Azure, или с помощью следующего руководства: https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-get-started-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 - это функция журнала, которую я использую, а последнее регистрируемое сообщение - «Отправка сообщения в лазурь», что означает, что somethng идетнеправильно, когда я отправляю это.даже catch не перехватывает исключение? ..

В чем здесь проблема?

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

1 Ответ

0 голосов
/ 05 июня 2018

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

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

 try
 {
   IntegrationLogger.Write(LogLevel.Verbose, "Sending message to azure");
   sender.Send(message);
   //add log
   IntegrationLogger.Write(LogLevel.Verbose, "Send message successfully"); 
 }
...