0

首先感谢您花时间研究这个问题。我在 PaaS(Openshift Origin)上启动和运行 qpid 时遇到了一些问题。

我第一次使用钝力方法让它运行,只需将其复制到服务器而不使用 ReST API。我尝试运行 qpid 时遇到的错误如下:

[dsxcore-dsx.dsx.org apache-qpid]\> qpid-broker-0.22/bin/qpid-server
System Properties set to -Damqj.logging.level=info -DQPID_HOME=/var/lib/openshift/52851c6e8000fdf616000015/apache-qpid/qpid-broker-0.22 -DQPID_WORK=apache-qpid/work
QPID_OPTS set to -Damqj.read_write_pool_size=32 -DQPID_LOG_APPEND=
Using QPID_CLASSPATH /var/lib/openshift/52851c6e8000fdf616000015/apache-qpid/qpid-broker-0.22/lib/qpid-all.jar:/var/lib/openshift/52851c6e8000fdf616000015/apache-qpid/qpid-broker-0.22/lib/plugins/*:/var/lib/openshift/52851c6e8000fdf616000015/apache-qpid/qpid-broker-0.22/lib/opt/*
Info: QPID_JAVA_GC not set. Defaulting to JAVA_GC -XX:+UseConcMarkSweepGC -XX:+HeapDumpOnOutOfMemoryError
Info: QPID_JAVA_MEM not set. Defaulting to JAVA_MEM -Xmx1024m
[Broker] BRK-1006 : Using configuration : /var/lib/openshift/52851c6e8000fdf616000015/apache-qpid/apache-qpid/work/config.json
[Broker] BRK-1007 : Using logging configuration : /var/lib/openshift/52851c6e8000fdf616000015/apache-qpid/qpid-broker-0.22/etc/log4j.xml
[Broker] BRK-1001 : Startup : Version: 0.22 Build: 1486100
[Broker] BRK-1010 : Platform : JVM : Oracle Corporation version: 1.7.0_45-mockbuild_2013_10_16_17_47-b00 OS : Linux version: 3.11.4-201.fc19.x86_64 arch: amd64
[Broker] BRK-1011 : Maximum Memory : 1,056,309,248 bytes
[Broker] BRK-1002 : Starting : Listening on TCP port 5672
[Broker] MNG-1001 : JMX Management Startup
[Broker] MNG-1002 : Starting : RMI Registry : Listening on port 8999
[Broker] MNG-1002 : Starting : JMX RMIConnectorServer : Listening on port 9099
[Broker] MNG-1004 : JMX Management Ready
[Broker] MNG-1001 : Web Management Startup
Exception during startup: java.lang.RuntimeException: Failed to start http management on ports [PortAdapter [id=1cdbe831-ee81-4039-aa46-4b07865189bf, name=HTTP]]
java.lang.RuntimeException: Failed to start http management on ports [PortAdapter [id=1cdbe831-ee81-4039-aa46-4b07865189bf, name=HTTP]]
at org.apache.qpid.server.management.plugin.HttpManagement.start(HttpManagement.java:180)
at org.apache.qpid.server.management.plugin.HttpManagement.setState(HttpManagement.java:156)
at org.apache.qpid.server.model.adapter.AbstractAdapter.setDesiredState(AbstractAdapter.java:99)
at org.apache.qpid.server.model.adapter.BrokerAdapter.changeState(BrokerAdapter.java:907)
at org.apache.qpid.server.model.adapter.BrokerAdapter.setState(BrokerAdapter.java:870)
at org.apache.qpid.server.model.adapter.AbstractAdapter.setDesiredState(AbstractAdapter.java:99)
at org.apache.qpid.server.configuration.updater.ChangeStateTask.call(ChangeStateTask.java:59)
at org.apache.qpid.server.configuration.updater.ChangeStateTask.call(ChangeStateTask.java:28)
at org.apache.qpid.server.configuration.updater.TaskExecutor.executeTask(TaskExecutor.java:213)
at org.apache.qpid.server.configuration.updater.TaskExecutor.access$200(TaskExecutor.java:46)
at org.apache.qpid.server.configuration.updater.TaskExecutor$CallableWrapper$1.run(TaskExecutor.java:252)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.qpid.server.configuration.updater.TaskExecutor$CallableWrapper.call(TaskExecutor.java:247)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
4

2 回答 2

1

默认情况下,Qpid Broker (Java) 在端口 8080 上启动 HTTP 管理接口。您看到的堆栈跟踪最可能的解释是其他一些进程已经绑定到该端口。此问题阻止 Qpid 启动。(端口是一种共享的系统资源,任何时候只有一个进程可以绑定到 [=listen on] 端口)。

在继续之前,您需要解决端口冲突。您可以通过两种方式解决此问题:您可以识别其他进程并将其重新配置为使用不同的端口,或者您可以重新配置 Quid。

如果您选择前者,请使用lsofnetstat等命令来发现其他进程的名称,然后参考其文档以了解如何重新配置​​端口绑定。请记住,该进程可能属于另一个用户。

sudo lsof -i:8080

如果您选择后一种路线,则该技术会根据您是否拥有现有的配置存储而有所不同。如果您是第一次启动 Qpid (即磁盘上没有现有的配置存储),您可以使用--config-property选项覆盖默认的 HTTP 管理端口。

./bin/qpid-server --config-property "qpid.http_port=8081"

(端口分配被永久写入配置存储,因此新值用于后续重新启动)。

如果您有现有的配置存储,则使用--management-mode--management-mode-http-port <port>选项在管理模式下启动代理,侦听临时管理端口。

./bin/qpid-server --management-mode --management-mode-http-port 10080

然后使用 Web 浏览器连接到管理,然后将冲突的 HTTP 端口永久重新分配给所需的(未使用的)值。最后,正常重启 Qpid(不带管理模式选项)以使代理恢复正常运行。

这两种技术在Qpid文档中的配置和管理中有更详细的描述。

于 2013-11-17T23:48:53.420 回答
0

也许有点太晚了,但仍然......我发现配置进入 /home/ userdirectory /config.json

于 2017-06-21T12:58:45.683 回答