Keine Verbindung mit Spring AMQP / Rabbit MQ : org.springframework.amqp.AmqpConnectException: java.net.ConnectException: Connection refused: connect
Ich bin neu in Spring AMQP /Rabbit MQ.
Bin mit einem Spring AMQP /Rabbit MQ in meinem Projekt. Ich bin mit folgenden Fehler nach der Ausführung einer tomcat:
org.springframework.amqp.Kaninchen.listener.SimpleMessageListenerContainer
- Verbraucher ausnahmeereignis, kann die Verarbeitung neu starten, wenn die Verbindung Fabrik unterstützt.Ausnahme Zusammenfassung: org.springframework.amqp.AmqpConnectException:
java.net.ConnectException: Connection refused: connect
Unten ist die Konfiguration-Datei :
spring-amqp.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:rabbit="http://www.springframework.org/schema/rabbit"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/rabbit/spring-rabbit.xsd">
<rabbit:connection-factory id="connectionFactory" host="127.0.0.1"/>
<rabbit:admin connection-factory="connectionFactory"/>
<rabbit:template connection-factory="connectionFactory" id="rabbitTemplate" channel-transacted="true"/>
<rabbit:queue name="proposalQueue" />
<rabbit:listener-container connection-factory="connectionFactory">
<rabbit:listener ref="listener" queue-names="proposalQueue"/>
</rabbit:listener-container>
<bean id="rabbitMQTransactionManager" class="org.springframework.amqp.rabbit.transaction.RabbitTransactionManager">
<property name="connectionFactory" ref="connectionFactory"/>
</bean>
<rabbit:direct-exchange name="myExchange">
<rabbit:bindings>
<rabbit:binding queue="proposalQueue" key="userMesssage" />
</rabbit:bindings>
</rabbit:direct-exchange>
<bean id="listener" class="com.xxx.xxxx.rabbitmq.QueueServer"/>
</beans>
QueueServer.java
@Override
public void onMessage(Message message) {
Map<String, Object> result = new HashMap<>();
MessageProperties props = message.getMessageProperties();
BasicProperties replyProps = new BasicProperties.Builder().correlationId(new String(message.getMessageProperties().getCorrelationId())).build();
String inputParameterStr = new String(message.getBody());
try {
Map<String,Object> inputParameters = (Map<String, Object>) Utility.StringToObject(inputParameterStr, "java.util.Map");
result = service.createQueue(inputParameters);
} catch (ClassNotFoundException e) {
logger.error("Error :::: "+getClass()+proposalID, e);
result.put(Constants.FAILURE, e.getMessage());
} catch (Exception e) {
logger.error("Error :::: "+getClass()+proposalID, e);
result.put(Constants.FAILURE, e.getMessage());
}
}
Bitte helfen Sie zu beheben.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das bedeutet einfach, dass RabbitMQ läuft nicht auf
localhost
(127.0.0.1
) auf den standard-port (5672).Haben, die Sie herunterladen und installieren/ausführen RabbitMQ? Es ist nicht wie ActiveMQ - es kann nicht laufen, eingebettet in eine java-Anwendung.
netstat -ano | find "5672"
imcmd
- Fenster ein; wenn Sie wirklich Zuhören, Sie sollten sehen127.0.0.1:5672 ... LISTENING
. Blick auf die rabbitmq-logs, um zu sehen, ob es Informationen gibt.Es gibt einen weiteren Aspekt des Problems.
Standardmäßig die RabbitMQ ist zugänglich auf der lokalen Maschine nur. Wenn Sie möchten, um den Zugriff von einer anderen Maschine, die Sie in der Regel erstellen Sie einen Eintrag in "rabbitmq.config" - Datei. Den Speicherort dieser Datei variiert von OS zu OS. In Linux, finden Sie diese unter: "/etc/rabbitmq/rabbitmq.config" und in Windows-Computer können Sie finden es unter: "C:\Program Dateien\RabbitMQ Server\rabbitmq_server-3.6.9\etc\rabbitmq.config".
Gibt es eine Möglichkeit, dass Sie nicht finden, diese Datei an der angegebenen Position. Dies ist eine optionale Datei, und Sie müssen nicht, sorgen zu machen, wenn es ist fehlt auch. Sie können Ihre eigenen erstellen. Dieser Eintrag ist so etwas wie:
Mit dabei, können Sie den Zugriff auf den server von einem beliebigen remote-Maschine.
Wenn nach dieser erhalten Sie den server nicht Sie können ändern Sie den Eintrag auf:
Werden Sie definitiv Holen Sie sich die server mit jedem client als auch über management-Konsole (wenn plugin aktiviert)
Werden, um Zugriff auf die RabbitMQ-Fernbedienung , Sie müssen es erlauben, die eingehenden TCP-Datenverkehr auf den ports 4369, 25672, 5671, 5672, 15672, 61613, 61614, 1883, und 8883.