Java Qpid Proton-ActiveMQ代理无法分配请求的地址:bind
我真的需要这个问题的答案,这就是为什么我要编辑它 我在连接中使用以下代码构建了一个ApacheActiveMQ代理 Broker.java 公共类经纪人{Java Qpid Proton-ActiveMQ代理无法分配请求的地址:bind,java,activemq,bind,amqp,qpid,Java,Activemq,Bind,Amqp,Qpid,我真的需要这个问题的答案,这就是为什么我要编辑它 我在连接中使用以下代码构建了一个ApacheActiveMQ代理 Broker.java 公共类经纪人{ private BrokerService broker; public Broker(String connector) { this.broker = new BrokerService(); this.broker.setUseJmx(true); try { this.broker.addCo
private BrokerService broker;
public Broker(String connector) {
this.broker = new BrokerService();
this.broker.setUseJmx(true);
try {
this.broker.addConnector(connector);
} catch (URISyntaxException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public void addConnector(String connector){
try {
this.broker.addConnector(connector);
} catch (Exception e) {
e.printStackTrace();
}
}
public void start() {
try {
this.broker.start();
} catch (Exception e) {
e.printStackTrace();
}
}
public BrokerService getBroker() {
return broker;
}
public void setBroker(BrokerService broker) {
this.broker = broker;
}
}
这是我的问题
我使用Qpid质子库(可在此处获得:)。我有一个类来读取数据,这几乎就是他们在qpid webiste上给出的示例
package messaging;
import java.io.IOException;
import org.apache.qpid.proton.Proton;
import org.apache.qpid.proton.amqp.messaging.AmqpValue;
import org.apache.qpid.proton.engine.BaseHandler;
import org.apache.qpid.proton.engine.Delivery;
import org.apache.qpid.proton.engine.Event;
import org.apache.qpid.proton.engine.Receiver;
import org.apache.qpid.proton.message.Message;
import org.apache.qpid.proton.reactor.FlowController;
import org.apache.qpid.proton.reactor.Handshaker;
public class AMQPSubscriber extends BaseHandler {
private String broker;
private String topic;
private String port;
public AMQPSubscriber(String broker, String port, String topic) {
this.broker = broker;
this.port = port;
this.topic = topic;
this.add(new Handshaker());
this.add(new FlowController());
}
@Override
public void onReactorInit(Event event) {
try {
event.getReactor().acceptor(broker, Integer.parseInt(port), new AMQPSubscriber(broker, port, topic));
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onDelivery(Event event) {
System.out.println("---------Message Received--------");
Receiver recv = (Receiver) event.getLink();
Delivery delivery = recv.current();
if (delivery.isReadable() && !delivery.isPartial()) {
int size = delivery.pending();
byte[] buffer = new byte[size];
int read = recv.recv(buffer, 0, buffer.length);
recv.advance();
Message msg = Proton.message();
msg.decode(buffer, 0, read);
System.out.println("Subject : " + msg.getProperties().getSubject());
System.out.println("Text : " + ((AmqpValue) msg.getBody()).getValue());
}
}
}
该类在main中被调用:
public static void main (String[]args) throws IOException, TimeoutException, InterruptedException{
Broker broker = new Broker("amqp://" + host + ":" + AMQPport);
broker.start();
AMQPSubscriber receiv = new AMQPSubscriber(host, "5672", topic);
Reactor r;
try {
r = Proton.reactor(receiv);
r.run();
} catch (IOException e) {
e.printStackTrace();
}
}
但是当我执行这个代码时,我得到一个
INFO | Loaded the Bouncy Castle security provider.
INFO | Using Persistence Adapter: KahaDBPersistenceAdapter[C:\Users\alexi\Documents\workspace-sts-3.7.3.RELEASE\IOT\activemq-data\localhost\KahaDB]
INFO | JMX consoles can connect to service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi
INFO | KahaDB is version 6
INFO | Recovering from the journal @1:61115
INFO | Recovery replayed 11 operations from the journal in 0.014 seconds.
INFO | PListStore:[C:\Users\alexi\Documents\workspace-sts-3.7.3.RELEASE\IOT\activemq-data\localhost\tmp_storage] started
INFO | Apache ActiveMQ 5.13.3 (localhost, ID:DESKTOP-UK0JIC4-52783-1467025817901-0:1) is starting
INFO | Listening for connections at: amqp://127.0.0.1:5672
INFO | Connector amqp://127.0.0.1:5672 started
INFO | Apache ActiveMQ 5.13.3 (localhost, ID:DESKTOP-UK0JIC4-52783-1467025817901-0:1) started
INFO | For help or more information please see: http://activemq.apache.org
WARN | Store limit is 102400 mb (current store usage is 0 mb). The data directory: C:\Users\alexi\Documents\workspace-sts-3.7.3.RELEASE\IOT\activemq-data\localhost\KahaDB only has 7792 mb of usable space. - resetting to maximum available disk space: 7792 mb
WARN | Temporary Store limit is 51200 mb (current store usage is 0 mb). The data directory: C:\Users\alexi\Documents\workspace-sts-3.7.3.RELEASE\IOT\activemq-data\localhost only has 7792 mb of usable space. - resetting to maximum available disk space: 7792 mb
java.net.BindException: Address already in use: bind
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Unknown Source)
at sun.nio.ch.Net.bind(Unknown Source)
at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source)
at java.nio.channels.ServerSocketChannel.bind(Unknown Source)
at org.apache.qpid.proton.reactor.impl.AcceptorImpl.<init>(AcceptorImpl.java:102)
at org.apache.qpid.proton.reactor.impl.ReactorImpl.acceptor(ReactorImpl.java:477)
at messaging.AMQPSubscriber.onReactorInit(AMQPSubscriber.java:33)
at org.apache.qpid.proton.engine.BaseHandler.handle(BaseHandler.java:209)
at org.apache.qpid.proton.engine.impl.EventImpl.dispatch(EventImpl.java:108)
at org.apache.qpid.proton.engine.impl.EventImpl.delegate(EventImpl.java:129)
at org.apache.qpid.proton.engine.impl.EventImpl.dispatch(EventImpl.java:114)
at org.apache.qpid.proton.reactor.impl.ReactorImpl.dispatch(ReactorImpl.java:307)
at org.apache.qpid.proton.reactor.impl.ReactorImpl.process(ReactorImpl.java:275)
at org.apache.qpid.proton.reactor.impl.ReactorImpl.run(ReactorImpl.java:343)
at messaging.Main.main(Main.java:98)
INFO |加载了Bouncy Castle安全提供程序。
信息|使用持久性适配器:kahadbpersistencedapter[C:\Users\alexi\Documents\workspace-sts-3.7.3.RELEASE\IOT\activemq data\localhost\KahaDB]
信息| JMX控制台可以连接到服务:JMX:rmi:///jndi/rmi://localhost:1099/jmxrmi
信息| KahaDB是第6版
信息|从日志中恢复@1:61115
信息|恢复在0.014秒内重播了日志中的11个操作。
信息| PListStore:[C:\Users\alexi\Documents\workspace-sts-3.7.3.RELEASE\IOT\activemq data\localhost\tmp_storage]已启动
信息| Apache ActiveMQ 5.13.3(本地主机,ID:DESKTOP-UK0JIC4-52783-1467025817901-0:1)正在启动
信息|在以下位置侦听连接:amqp://127.0.0.1:5672
信息|连接器amqp://127.0.0.1:5672 起动
信息| Apache ActiveMQ 5.13.3(本地主机,ID:DESKTOP-UK0JIC4-52783-1467025817901-0:1)已启动
信息|有关帮助或更多信息,请参阅:http://activemq.apache.org
警告|存储限制为102400 mb(当前存储使用量为0 mb)。数据目录:C:\Users\alexi\Documents\workspace-sts-3.7.3.RELEASE\IOT\activemq data\localhost\KahaDB只有7792 mb的可用空间。-重置为最大可用磁盘空间:7792 mb
警告|临时存储限制为51200 mb(当前存储使用量为0 mb)。数据目录:C:\Users\alexi\Documents\workspace-sts-3.7.3.RELEASE\IOT\activemq data\localhost只有7792 mb的可用空间。-重置为最大可用磁盘空间:7792 mb
java.net.BindException:地址已在使用中:bind
位于sun.nio.ch.Net.bind0(本机方法)
位于sun.nio.ch.Net.bind(未知源)
位于sun.nio.ch.Net.bind(未知源)
位于sun.nio.ch.serversocketchannelpl.bind(未知源)
位于java.nio.channels.ServerSocketChannel.bind(未知源)
位于org.apache.qpid.proton.reactor.impl.AcceptorImpl.(AcceptorImpl.java:102)
位于org.apache.qpid.proton.reactor.impl.ReactorImpl.acceptor(ReactorImpl.java:477)
位于messaging.AMQPSubscriber.onReactorInit(AMQPSubscriber.java:33)
位于org.apache.qpid.proton.engine.BaseHandler.handle(BaseHandler.java:209)
位于org.apache.qpid.proton.engine.impl.EventImpl.dispatch(EventImpl.java:108)
位于org.apache.qpid.proton.engine.impl.EventImpl.delegate(EventImpl.java:129)
位于org.apache.qpid.proton.engine.impl.EventImpl.dispatch(EventImpl.java:114)
位于org.apache.qpid.proton.reactor.impl.ReactorImpl.dispatch(ReactorImpl.java:307)
位于org.apache.qpid.proton.reactor.impl.ReactorImpl.process(ReactorImpl.java:275)
位于org.apache.qpid.proton.reactor.impl.ReactorImpl.run(ReactorImpl.java:343)
在messaging.Main.Main(Main.java:98)
当我使用MQTT和Paho时,这个代理工作得很好,我希望它也能与AMQP一起工作。
我知道bind意味着端口已经被使用,但我不知道如何在没有数据发送的端口上侦听
谢谢你帮助我
Alexi当另一个应用程序创建了一个服务器套接字,正在侦听您请求的目标端口时,您会收到该错误。您需要检查您是否正在该端口上运行另一个代理实例,或者是否安装了阻止访问的防火墙 当另一个应用程序在您请求的目标端口上侦听服务器套接字时,就会出现该错误。您需要检查您是否正在该端口上运行另一个代理实例,或者是否安装了阻止访问的防火墙 我找到了解决办法 当我将连接器添加到activeMQ嵌入式代理时,它将其添加为TCP,一次只允许一个连接 因此,我创建了一个UDP连接器,如下所示:
broker.addConnector(“udp://“+host+”:“+amqport”)代码>
这个解决方案正在为我工作,我希望它能在将来帮助其他开发人员
干杯,亚历克西我找到了解决办法
当我将连接器添加到activeMQ嵌入式代理时,它将其添加为TCP,一次只允许一个连接
因此,我创建了一个UDP连接器,如下所示:
broker.addConnector(“udp://“+host+”:“+amqport”)代码>
这个解决方案正在为我工作,我希望它能在将来帮助其他开发人员
干杯,Alexi你的本地IP应该是192.168.100.47吗?如果是,你确定吗?还要检查您的hosts
文件,查看除了127.0.0.1
之外,是否有任何localhost
条目。此IP是服务器地址,是网络中的另一台计算机。192.168.100.47
应该是您的本地IP吗?如果是,你确定吗?另外,请检查您的hosts
文件,查看除了127.0.0.1
之外,是否还有localhost
的任何条目。此IP是服务器地址,它是网络上的另一台计算机。我尝试过使用“netstat-a-n-o”查找“5672”`当我的程序终止时,我什么都没有了。,我还检查了允许连接的防火墙。在我的应用程序中,唯一使用这个端口的进程是我的嵌入式代理,我想这是AMQP传输所必需的。我猜错误出在其他地方,我曾尝试使用“netstat-a-n-o”查找“5672”`当我的程序终止时,我什么都没有了。我还检查了允许连接的防火墙。在我的应用程序中,唯一使用这个端口的进程是我的嵌入式代理,我想这是AMQP传输所必需的。我想是别的地方出了错