аутентифицировать соединение с activeMQ с помощью имени пользователя/пароля

У меня есть приложение, которое работает нормально, отправляя сообщения в activemq. Я использую spring.net и Nmstemplate для подключения к брокеру. xml файл конфигурации в общем виде:

<object id="ActiveMqConnectionFactory" 
        type="Apache.NMS.ActiveMQ.ConnectionFactory, Apache.NMS.ActiveMQ">
</object>

<object id="ConnectionFactory"
        type="Spring.Messaging.Nms.Connections.CachingConnectionFactory, Spring.Messaging.Nms">
  <constructor-arg index="0" ref="ActiveMqConnectionFactory"/>
  <property name="SessionCacheSize" value="10"/>
</object>

<object id="NmsTemplate" 
        type="Spring.Messaging.Nms.Core.NmsTemplate, Spring.Messaging.Nms">
  <constructor-arg index="0" ref="ConnectionFactory"/>
  <property name="MessageConverter" ref="SimpleMessageConverter"/>
</object>

<object id="SimpleMessageConverter" 
        type="Spring.Messaging.Nms.Support.Converter.SimpleMessageConverter, Spring.Messaging.Nms">
</object>

Пока все работает, найдите отправку сообщения с помощью NmsTemplate.ConvertAndSend(); Проблема в том, что я хочу защитить соединение, используя имя пользователя/пароль. Я устанавливаю учетные данные в файле конфигурации activemq, и теперь мне нужно указать эти учетные данные в коде, но я не нахожу, где !! Я пробовал с:

<object id="ActiveMqConnectionFactory" type="Apache.NMS.ActiveMQ.ConnectionFactory, Apache.NMS.ActiveMQ">
  <property name="UserName" value="usertest"/>
  <property name="Password" value="passwordtest"/>
</object>

Но при отправке я получаю исключение «Соединение уже закрыто» и те же учетные данные настройки в коде.

Итак, у кого-нибудь есть хороший пример или подсказка о том, как настроить имя пользователя/пароль для отправки сообщения защищенному брокеру activemq?


person user810917    schedule 10.08.2011    source источник


Ответы (1)


Поскольку никто не ответил на этот вопрос, я нашел этот ответ на http://forum.springframework.net/showthread.php?9184-authenticate-to-activeMQ-using-Nmstemplate-in-net

this.ConnectionFactory.UserName = this.Username;
this.ConnectionFactory.Password = this.Password;

this.ConnectionFactory.BrokerUri = new System.Uri(this.Uri);

using (IConnection conn = this.ConnectionFactory.CreateConnection())
{
using (ISession session = conn.CreateSession())
{
    IObjectMessage objMessage = session.CreateObjectMessage(message);
    using (IMessageProducer producer = session.CreateProducer())
            {
                    NmsDestinationAccessor destinationResolver = new NmsDestinationAccessor();
                    IDestination destination = destinationResolver.ResolveDestinationName(session, this.Queue);
                    producer.Send(destination, objMessage);
            }
    }
}
person James    schedule 12.05.2016
comment
Можете ли вы объяснить немного больше? - person Dieter Meemken; 12.05.2016