BlobMesage 401在ActiveMQ上未经授权

时间:2013-09-19 10:01:30

标签: java activemq spring-jms

创建blob消息以在ActiveMQ上传输文件时出现问题。 错误:javax.jms.JMSException:PUT未成功:401 Unauthorized 这是我的经纪人:

    <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL"><value>tcp://localhost:61616?jms.blobTransferPolicy.defaultUploadUrl=http://localhost:8161/fileserver/</value>
        </property>
        <property name="userName" value="admin" />
        <property name="password" value="admin" />
    </bean>

这里有什么问题吗?我花了几个小时搜索,但找不到正确的解决方案。请与我分享

2 个答案:

答案 0 :(得分:1)

我认为您需要添加HTTP传输连接器:

<transportConnector name="http" uri="http://0.0.0.0:8080"/>

作为http:// localhost:8080的URI在我的情况下工作。 我还认为默认连接器不安全,用户名和密码已过时(至少第一次尝试)。

最终解决方案

ActiveMQ config(activemq.xml)

    <transportConnectors>
       <transportConnector name="http" uri="http://0.0.0.0:8080"/>
    </transportConnectors>

Java客户端(仅限生产者)

    try {
    ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("http://localhost:8080");
    Connection connection = connectionFactory.createConnection();
    connection.start();

    // Create a Session
    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

    // Create the best Queue ever
    Destination destination = session.createQueue("STACKOVERFLOW.SUPPORT");

    // Create a MessageProducer from the Session to the Topic or Queue
    MessageProducer producer = session.createProducer(destination);
    producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

    // Create a messages
    TextMessage message = session.createTextMessage("I hope this snippets help you :D | Thread: " + Thread.currentThread().getName());

    producer.send(message);

    //clean up
    session.close();
    connection.close();
    } catch(JMSException e) {
       e.printStackTrace();
    }

答案 1 :(得分:0)

我尝试使用http / ftp客户端连接http服务器并验证您是否具有写入权限...