удостоверяване на връзката към 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