Я получаю исключение при попытке установить соединение с ActiveMQ через NMS в консольном приложении .NET Core.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Гость
 Я получаю исключение при попытке установить соединение с ActiveMQ через NMS в консольном приложении .NET Core.

Сообщение Гость »


Я пытаюсь создать простое консольное приложение для проверки концепции, которое создает сообщение XML-файла в очередь, а затем потребляет сообщение из этой очереди. Проблема в том, что я не могу создать соединение с помощью метода .CreateConnection(). Когда я пытаюсь это сделать, я получаю следующее исключение:

Необработанное исключение. Apache.NMS.NMSConnectionException: ошибка при создании транспорта. ---> System.Exception: NewInstance не удалось найти совпадение для id = tcp в Apache.NMS.ActiveMQ.Transport.TransportFactory.NewInstance (строковая схема) в Apache.NMS.ActiveMQ.Transport.TransportFactory.CreateTransportFactory (расположение Uri) Вот мой файл program.cs:

с использованием Apache.NMS; использование Apache.NMS.ActiveMQ; использование Microsoft.Extensions.Configuration; классная программа { static void Main(String[] args) { вар строитель = новый ConfigurationBuilder(); Нить? brokerUri = "tcp://localhost:61616"; Нить? requestQueueName = "новая очередь"; String filePath = "C:\\Users\\asasy\\OneDrive\\Desktop\\Dokumenciki\\Tauron\\ActiveMQ_Sender\\messages\\files.xml"; Строка xmlResponseContent = String.Empty; xmlResponseContent = System.IO.File.ReadAllText(filePath); // Отправляем сообщения в очередь Console.WriteLine(xmlResponseContent); SendMessage (brokerUri, requestQueueName, xmlResponseContent); Thread.Sleep(120); // Получаем сообщения из очереди ReceiveMessages(brokerUri, "RequestQueue"); Console.WriteLine("Нажмите любую клавишу, чтобы выйти..."); Консоль.ReadKey(); } static void SendMessage(StringbrokerUri,StringqueueName,String message) { Фабрика Apache.NMS.IConnectionFactory = новая ConnectionFactory(новый Uri(brokerUri)); используя (соединение IConnection = Factory.CreateConnection()) { пытаться { соединение.Старт(); используя (сеанс ISession = Connection.CreateSession(AcknowledgementMode.AutoAcknowledge)) { Назначение назначения ID = session.GetQueue(queueName); используя (производитель IMessageProducer = session.CreateProducer(назначение)) { ITextMessage textMessage = Producer.CreateTextMessage(сообщение); производитель.Отправить(текстовое сообщение); Console.WriteLine("Сообщение отправлено: " + textMessage.Text); } } } поймать (Исключение ex) { Console.WriteLine("Произошла ошибка: " + ex.Message); } окончательно { if (соединение != null && Connection.IsStarted) { соединение.Стоп(); соединение.Закрыть(); } } } } static void ReceiveMessages(StringbrokerUri,StringqueueName) { Фабрика IConnectionFactory = новый NMSConnectionFactory (brokerUri); используя (соединение IConnection = Factory.CreateConnection()) { пытаться { соединение.Старт(); используя (сеанс ISession = Connection.CreateSession(AcknowledgementMode.AutoAcknowledge)) { Назначение назначения ID = session.GetQueue(queueName); используя (потребитель IMessageConsumer = session.CreateConsumer(пункт назначения)) { пока (правда) { Сообщение IMessage = Consumer.Receive(); if (сообщение — ITextMessage textMessage) { Console.WriteLine("Получено сообщение: " + textMessage.Text); } иначе, если (сообщение == ноль) { // В очереди больше нет сообщений перерыв; } } } } } поймать (Исключение ex) { Console.WriteLine("Произошла ошибка: " + ex.Message); } окончательно { if (соединение != null && Connection.IsStarted) { соединение.Стоп(); соединение.Закрыть(); } } } } } Вот мои транспортные коннекторы из файла activemq.xml

Я пробовал использовать разные протоколы, например Stomp, но это не особо помогло. Я пробовал отключить брандмауэр и антивирус, надеясь, что это поможет, но не помогло.

Я просмотрел документацию и исходный код, чтобы понять сообщение «не удалось найти совпадение для id = tcp», но ничего по этому поводу не нашел.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»