Ich versuche, mit Kamel-amqp (Version 2.17) -Komponente auf meinem Kamel Route zu Rabbitmq verbinden.Camel RabbitMQ Verbindung mit Kamel amqp
ich konfiguriert haben es wie folgt:
@Bean
CachingConnectionFactory jmsCachingConnectionFactory(){
JmsConnectionFactory pool = new JmsConnectionFactory();
pool.setRemoteURI("amqp://127.0.0.1:5672");
pool.setUsername("guest");
pool.setPassword("guest");
CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory();
cachingConnectionFactory.setTargetConnectionFactory(pool);
return cachingConnectionFactory;
}
@Bean
JmsConfiguration jmsConfig(){
JmsConfiguration configuration = new JmsConfiguration();
configuration.setConnectionFactory(jmsCachingConnectionFactory());
// configuration.setCacheLevelName("CACHE_CONSUMER");
return configuration;
}
@Bean
AMQPComponent amqp(){
AMQPComponent component = new AMQPComponent();
component.setConfiguration(jmsConfig());
return component;
}
Der Fehler, den ich bekommen habe ist
javax.jms.JMSException: Eine bestehende Verbindung wurde durch der Remote-Host bei gewaltsam geschlossen org.apache.qpid.jms.exceptions.JmsExceptionSupport.create (JmsExceptionSupport.java:66) ~ [qpid-jms-client-0.8.0.jar: 0.8.0]
In meinem rabbitmq Protokoll kann ich die folgende Meldung sehen, die ich nicht in der Lage bin
*
** Reason for termination ==
** {function_clause,
[{rabbit_amqp1_0_link_util,'-outcomes/1-lc$^0/1-0-',
[{list,
[{symbol,<<"amqp:accepted:list">>},
{symbol,<<"amqp:rejected:list">>},
{symbol,<<"amqp:released:list">>},
{symbol,<<"amqp:modified:list">>}]}],
[{file,"src/rabbit_amqp1_0_link_util.erl"},{line,49}]},
{rabbit_amqp1_0_link_util,outcomes,1,
[{file,"src/rabbit_amqp1_0_link_util.erl"},{line,49}]},
{rabbit_amqp1_0_outgoing_link,attach,3,
[{file,"src/rabbit_amqp1_0_outgoing_link.erl"},{line,41}]},
{rabbit_amqp1_0_session_process,with_disposable_channel,2,
[{file,"src/rabbit_amqp1_0_session_process.erl"},{line,377}]},
{rabbit_amqp1_0_session_process,handle_control,2,
[{file,"src/rabbit_amqp1_0_session_process.erl"},{line,197}]},
{rabbit_amqp1_0_session_process,handle_cast,2,
[{file,"src/rabbit_amqp1_0_session_process.erl"},{line,134}]},
{gen_server2,handle_msg,2,[{file,"src/gen_server2.erl"},{line,1049}]},
{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,240}]}]}
=ERROR REPORT==== 8-Jul-2016::17:09:27 ===
closing AMQP connection <0.29082.0> (127.0.0.1:55479 -> 127.0.0.1:5672):
{handshake_error,running,<0.29104.0>,
{{symbol,<<"amqp:internal-error">>},
"Session error: ~p~n~p~n",
[function_clause,
[{rabbit_amqp1_0_link_util,'-outcomes/1-lc$^0/1-0-',
[{list,
[{symbol,<<"amqp:accepted:list">>},
{symbol,<<"amqp:rejected:list">>},
{symbol,<<"amqp:released:list">>},
{symbol,<<"amqp:modified:list">>}]}],
[{file,"src/rabbit_amqp1_0_link_util.erl"},{line,49}]},
{rabbit_amqp1_0_link_util,outcomes,1,
[{file,"src/rabbit_amqp1_0_link_util.erl"},{line,49}]},
{rabbit_amqp1_0_outgoing_link,attach,3,
[{file,"src/rabbit_amqp1_0_outgoing_link.erl"},{line,41}]},
{rabbit_amqp1_0_session_process,with_disposable_channel,2,
[{file,"src/rabbit_amqp1_0_session_process.erl"},{line,377}]},
{rabbit_amqp1_0_session_process,handle_control,2,
[{file,"src/rabbit_amqp1_0_session_process.erl"},{line,197}]},
{rabbit_amqp1_0_session_process,handle_cast,2,
[{file,"src/rabbit_amqp1_0_session_process.erl"},{line,134}]},
{gen_server2,handle_msg,2,[{file,"src/gen_server2.erl"},{line,1049}]},
{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,240}]}]]}}
*
I amqp_1_0 Plugin in rabbitmq aktiviert haben zu verstehen. Kann mir jemand helfen, dies zu lösen.
Es gibt eine Kamel-Kaninchen-Komponente. Warum benutzt du das nicht? –
Camel-rabbitmq funktioniert perfekt, aber das einzige Problem ist Transaktionsunterstützung scheint zu fehlen. Ich sehe keine Möglichkeit, meinen Tx-Manager in der Komponente einzurichten. Das ist der einzige Grund, warum ich anfing, amqp zu betrachten, da es jms-Komponente verwendet, die tx-Unterstützung hat. – VGaur
RabbitMQ rät von der Verwendung von AMQP-Transaktionen ab, da sie sehr langsam sind - nach eigenen Worten des Entwicklers ** verringern sie den Durchsatz um einen satten Faktor von 250 **! Ich weiß, dass es Ihnen mit diesem Problem nicht hilft, aber mein Vorschlag wäre, RabbitMQ mit AutoAck Option aus zu versuchen und mit [Herausgeber bestätigt aktiviert] (https://www.rabbitmq.com/confirms.html). Bestätigungen werden von Camel ab der Version 2.17.0 unterstützt, siehe [Dokumentation der RabbitMQ-Komponente] (https://camel.apache.org/rabbitmq.html) für Details. –