创建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>
这里有什么问题吗?我花了几个小时搜索,但找不到正确的解决方案。请与我分享
答案 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服务器并验证您是否具有写入权限...