我已经通过Docker设置了一个ActiveMQ Classic代理:
FROM ubuntu:latest
RUN apt-get update && apt-get -y upgrade
RUN apt-get -y install curl
RUN apt-get -y install default-jre
RUN curl -O http://archive.apache.org/dist/activemq/5.18.2/apache-activemq-5.18.2-bin.tar.gz
RUN mkdir -p /opt/apache/activemq
RUN tar xvzf apache-activemq-5.18.2-bin.tar.gz -C /opt/apache/activemq
WORKDIR /opt/apache/activemq/apache-activemq-5.18.2/bin
VOLUME /opt/apache/activemq/apache-activemq-5.18.2/conf
RUN echo './activemq start && tail -f /opt/apache/activemq/apache-activemq-5.18.2/data/activemq.log' > start.sh
# Admin interface
EXPOSE 8161
# Active MQ's default port (Listen port)
EXPOSE 61616
CMD ["/bin/bash", "./start.sh"]
通过向代理发送JMS消息时
curl
,例如:
curl.exe -XPOST -d "@SomeJsonFile.json" http://admin:admin@localhost:8161/api/message?destination=queue://SOME.LOCAL.NONEXISTENT.QUEUE
我得到一个错误:
activemq-test-container-1 | javax.servlet.ServletException: javax.servlet.ServletException: javax.servlet.ServletException: Could not post JMS message: javax.jms.JMSSecurityException: User name [system] or password is invalid.
activemq-test-container-1 | at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:162)
activemq-test-container-1 | at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
activemq-test-container-1 | at org.eclipse.jetty.server.Server.handle(Server.java:516)
activemq-test-container-1 | at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)
activemq-test-container-1 | at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)
activemq-test-container-1 | at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)
activemq-test-container-1 | at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
activemq-test-container-1 | at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
activemq-test-container-1 | at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
activemq-test-container-1 | at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
activemq-test-container-1 | at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
activemq-test-container-1 | at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
activemq-test-container-1 | at java.base/java.lang.Thread.run(Thread.java:829)
activemq-test-container-1 | Caused by: javax.servlet.ServletException: javax.servlet.ServletException: Could not post JMS message: javax.jms.JMSSecurityException: User name [system] or password is invalid.
activemq-test-container-1 | at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:162)
activemq-test-container-1 | at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:560)
activemq-test-container-1 | at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)
activemq-test-container-1 | ... 12 more
activemq-test-container-1 | Caused by: javax.servlet.ServletException: Could not post JMS message: javax.jms.JMSSecurityException: User name [system] or password is invalid.
activemq-test-container-1 | at org.apache.activemq.web.MessageServlet.doPost(MessageServlet.java:151)
activemq-test-container-1 | at javax.servlet.http.HttpServlet.service(HttpServlet.java:681)
activemq-test-container-1 | at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
activemq-test-container-1 | at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)
activemq-test-container-1 | at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:554)
activemq-test-container-1 | at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
activemq-test-container-1 | at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:560)
activemq-test-container-1 | at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
activemq-test-container-1 | at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
activemq-test-container-1 | at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)
activemq-test-container-1 | at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
activemq-test-container-1 | at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)
activemq-test-container-1 | at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
activemq-test-container-1 | at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505)
activemq-test-container-1 | at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)
activemq-test-container-1 | at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
activemq-test-container-1 | at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)
activemq-test-container-1 | at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
activemq-test-container-1 | at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)
activemq-test-container-1 | ... 14 more
activemq-test-container-1 | Caused by: javax.jms.JMSSecurityException: User name [system] or password is invalid.
activemq-test-container-1 | at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:65)
activemq-test-container-1 | at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1465)
activemq-test-container-1 | at org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1548)
activemq-test-container-1 | at org.apache.activemq.ActiveMQConnection.start(ActiveMQConnection.java:568)
activemq-test-container-1 | at org.apache.activemq.web.WebClient.getConnection(WebClient.java:262)
activemq-test-container-1 | at org.apache.activemq.web.WebClient.createSession(WebClient.java:359)
activemq-test-container-1 | at org.apache.activemq.web.WebClient.getSession(WebClient.java:250)
activemq-test-container-1 | at org.apache.activemq.web.MessageServletSupport.getDestination(MessageServletSupport.java:335)
activemq-test-container-1 | at org.apache.activemq.web.MessageServletSupport.getDestination(MessageServletSupport.java:283)
activemq-test-container-1 | at org.apache.activemq.web.MessageServlet.doPost(MessageServlet.java:127)
activemq-test-container-1 | ... 32 more
activemq-test-container-1 | Caused by: java.lang.SecurityException: User name [system] or password is invalid.
activemq-test-container-1 | at org.apache.activemq.security.SimpleAuthenticationBroker.authenticate(SimpleAuthenticationBroker.java:103)
activemq-test-container-1 | at org.apache.activemq.security.SimpleAuthenticationBroker.addConnection(SimpleAuthenticationBroker.java:71)
activemq-test-container-1 | at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:99)
activemq-test-container-1 | at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:99)
activemq-test-container-1 | at org.apache.activemq.broker.TransportConnection.processAddConnection(TransportConnection.java:850)
activemq-test-container-1 | at org.apache.activemq.command.ConnectionInfo.visit(ConnectionInfo.java:139)
activemq-test-container-1 | at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:333)
activemq-test-container-1 | at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:198)
activemq-test-container-1 | at org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116)
activemq-test-container-1 | at org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
activemq-test-container-1 | at org.apache.activemq.transport.vm.VMTransport.iterate(VMTransport.java:275)
activemq-test-container-1 | at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:133)
activemq-test-container-1 | at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:48)
activemq-test-container-1 | at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
activemq-test-container-1 | at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
activemq-test-container-1 | ... 1 more
activemq-test-container-1 | 2024-01-09 13:47:50,541 | INFO | Stopping vm://localhost#0 because Failed with SecurityException: User name [system] or password is invalid. | org.apache.activemq.broker.TransportConnection | ActiveMQ BrokerService[localhost] Task-3
我不确定“系统”用户来自哪里,因为我还没有配置安全性。当我试图通过上的管理控制台发送消息时,我也遇到了同样的错误
http://localhost:8161/admin/send.jsp
,或者当我尝试访问下的现有队列时
http://localhost:8161/admin/queues.jsp
.
也许我理解了一些错误,但这里似乎有两层身份验证?
admin:admin
访问管理控制台/API,以及访问队列的单独身份验证?如何通过设置JMS用户名/密码
卷曲
?