使用用户名/密码验证与 activeMQ 的连接

Posted

技术标签:

【中文标题】使用用户名/密码验证与 activeMQ 的连接【英文标题】:authenticate connection to activeMQ with username/password 【发布时间】:2011-10-24 03:20:44 【问题描述】:

我有一个运行正常的应用程序向 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 代理?

【问题讨论】:

【参考方案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);
            
    

【讨论】:

你能再解释一下吗?

以上是关于使用用户名/密码验证与 activeMQ 的连接的主要内容,如果未能解决你的问题,请参考以下文章

基于vagrant工具在win7下免密登录linux

vue项目怎么设置卡密验证

ActiveMQ修改连接的用户名密码

使用 OpenID 连接的节点快递

ssh免密登录

linux下配置远程免密登录方法教程