我有一个运行正常的应用程序向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经纪人发送消息?
答案 0 :(得分: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);
}
}
}