1

创建 blob 消息以在 ActiveMQ 上传输文件时出现问题。错误:javax.jms.JMSException:PUT 未成功:401 Unauthorized Here my brokerURL:

    <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>

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

4

2 回答 2

1

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

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

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

最终解决方案

ActiveMQ 配置 (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();
    }
于 2013-11-12T09:54:59.167 回答
0

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

于 2013-09-19T10:17:58.290 回答