1

ActiveMQ でファイルを転送するための BLOB メッセージを作成するときに問題が発生しました。エラー: javax.jms.JMSException: PUT が成功しませんでした: 401 Unauthorized ここに 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 に答える