Java 未接收RabbitMQ阻止的连接通知
我正在尝试在AMQPJava 未接收RabbitMQ阻止的连接通知,java,rabbitmq,amqp,spring-amqp,Java,Rabbitmq,Amqp,Spring Amqp,我正在尝试在AMQPCachingConnectionFactory上注册一个BlockedListener,以处理连接进入/离开阻塞状态的通知。不幸的是,我从未收到任何事件 在我的Java客户端中,我正在使用: org.springframework.amqp:springrabbit:jar:2.1.11.RELEASE com.rabbitmq:amqp客户端:jar:5.4.3 我的兔子服务器正在使用docker映像rabbitmq:3-management,它映射到3.8.2和Er
CachingConnectionFactory
上注册一个BlockedListener
,以处理连接进入/离开阻塞状态的通知。不幸的是,我从未收到任何事件
在我的Java客户端中,我正在使用:
org.springframework.amqp:springrabbit:jar:2.1.11.RELEASE
com.rabbitmq:amqp客户端:jar:5.4.3
rabbitmq:3-management
,它映射到3.8.2
和Erlang 22.2.4
这是我用来连接到rabbit并注册侦听器的代码片段
com.rabbitmq.client.ConnectionFactory rmqConnectionFactory = new com.rabbitmq.client.ConnectionFactory();
rmqConnectionFactory.useNio();
rmqConnectionFactory.setHost(rabbitmqHost);
rmqConnectionFactory.setUsername(rabbitmqUsername);
rmqConnectionFactory.setPassword(rabbitmqPassword);
rmqConnectionFactory.setPort(rabbitmqPort);
rmqConnectionFactory.setVirtualHost(rabbitmqVirtualHost);
CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory(rmqConnectionFactory);
cachingConnectionFactory.addConnectionListener(new ConnectionListener() {
@Override
public void onCreate(Connection connection) {
log.info("New connection: {}", connection);
connection.getDelegate().addBlockedListener(new BlockedListener() {
@Override
public void handleBlocked(String s) {
log.warn("Connection {} entered a blocked state with message {}", connection, s);
}
@Override
public void handleUnblocked() {
log.info("Connection {} left a blocked state", connection);
}
});
}
});
我从中获取日志条目
log.info("New connection: {}", connection);
但不是来自
log.warn("Connection {} entered a blocked state with message {}", connection, s);
或
我缺少什么?我正在docker中使用RabbitMQ server 3.7,但我可以看到我的
RabbitMQ\u amqp1\u 0
未启用。报告说:
我们引入了AMQP 0-9-1协议扩展,在该扩展中,代理在连接被阻止时向客户端发送connection.blocked方法,在连接被取消阻止时发送connection.unblocked方法
也许您安装了一个rabbitmq\u amqp0\u 9
插件?我认为协议1\u 0
和0\u 9
是不同的
root@ffb673602565:/# rabbitmq-plugins list
Listing plugins with pattern ".*" ...
Configured: E = explicitly enabled; e = implicitly enabled
| Status: * = running on rabbit@ffb673602565
|/
[ ] rabbitmq_amqp1_0 3.7.11
[ ] rabbitmq_auth_backend_cache 3.7.11
[ ] rabbitmq_auth_backend_http 3.7.11
[ ] rabbitmq_auth_backend_ldap 3.7.11
[ ] rabbitmq_auth_mechanism_ssl 3.7.11
[ ] rabbitmq_consistent_hash_exchange 3.7.11
[ ] rabbitmq_event_exchange 3.7.11
[ ] rabbitmq_federation 3.7.11
[ ] rabbitmq_federation_management 3.7.11
[ ] rabbitmq_jms_topic_exchange 3.7.11
[E*] rabbitmq_management 3.7.11
[e*] rabbitmq_management_agent 3.7.11
[ ] rabbitmq_mqtt 3.7.11
[ ] rabbitmq_peer_discovery_aws 3.7.11
[ ] rabbitmq_peer_discovery_common 3.7.11
[ ] rabbitmq_peer_discovery_consul 3.7.11
[ ] rabbitmq_peer_discovery_etcd 3.7.11
[ ] rabbitmq_peer_discovery_k8s 3.7.11
[ ] rabbitmq_random_exchange 3.7.11
[ ] rabbitmq_recent_history_exchange 3.7.11
[ ] rabbitmq_sharding 3.7.11
[ ] rabbitmq_shovel 3.7.11
[ ] rabbitmq_shovel_management 3.7.11
[ ] rabbitmq_stomp 3.7.11
[ ] rabbitmq_top 3.7.11
[ ] rabbitmq_tracing 3.7.11
[ ] rabbitmq_trust_store 3.7.11
[e*] rabbitmq_web_dispatch 3.7.11
[ ] rabbitmq_web_mqtt 3.7.11
[ ] rabbitmq_web_mqtt_examples 3.7.11
[ ] rabbitmq_web_stomp 3.7.11
[ ] rabbitmq_web_stomp_examples 3.7.11
原来是这样;然而,上述代码/设置是正确的;Rabbit不会发送事件,直到您尝试在该连接上发布消息。现在请告诉我们,您如何阻止该连接,让框架启动该
阻止的事件:我找到了一些方法来触发该条件;我发现最简单(最直接)的方法是在容器rabbitmqctl set\u vm\u memory\u high\u watermark 0.01
(其中0.01
足够小,可以小于当前内存使用量)内执行此命令
root@ffb673602565:/# rabbitmq-plugins list
Listing plugins with pattern ".*" ...
Configured: E = explicitly enabled; e = implicitly enabled
| Status: * = running on rabbit@ffb673602565
|/
[ ] rabbitmq_amqp1_0 3.7.11
[ ] rabbitmq_auth_backend_cache 3.7.11
[ ] rabbitmq_auth_backend_http 3.7.11
[ ] rabbitmq_auth_backend_ldap 3.7.11
[ ] rabbitmq_auth_mechanism_ssl 3.7.11
[ ] rabbitmq_consistent_hash_exchange 3.7.11
[ ] rabbitmq_event_exchange 3.7.11
[ ] rabbitmq_federation 3.7.11
[ ] rabbitmq_federation_management 3.7.11
[ ] rabbitmq_jms_topic_exchange 3.7.11
[E*] rabbitmq_management 3.7.11
[e*] rabbitmq_management_agent 3.7.11
[ ] rabbitmq_mqtt 3.7.11
[ ] rabbitmq_peer_discovery_aws 3.7.11
[ ] rabbitmq_peer_discovery_common 3.7.11
[ ] rabbitmq_peer_discovery_consul 3.7.11
[ ] rabbitmq_peer_discovery_etcd 3.7.11
[ ] rabbitmq_peer_discovery_k8s 3.7.11
[ ] rabbitmq_random_exchange 3.7.11
[ ] rabbitmq_recent_history_exchange 3.7.11
[ ] rabbitmq_sharding 3.7.11
[ ] rabbitmq_shovel 3.7.11
[ ] rabbitmq_shovel_management 3.7.11
[ ] rabbitmq_stomp 3.7.11
[ ] rabbitmq_top 3.7.11
[ ] rabbitmq_tracing 3.7.11
[ ] rabbitmq_trust_store 3.7.11
[e*] rabbitmq_web_dispatch 3.7.11
[ ] rabbitmq_web_mqtt 3.7.11
[ ] rabbitmq_web_mqtt_examples 3.7.11
[ ] rabbitmq_web_stomp 3.7.11
[ ] rabbitmq_web_stomp_examples 3.7.11