我想为CachingConnectionFactory设置SSL连接工厂。我尝试过:
com.rabbitmq.client.ConnectionFactory cf = new ConnectionFactory();
cf.setHost(HOST);
cf.setPort(PORT);
cf.setUsername(USERNAME);
cf.setPassword(PASSWD);
cf.setVirtualHost(VIRTUAL_HOST);
cf.setAutomaticRecoveryEnabled(false);
cf.setConnectionTimeout(10000);
if (useSSL) {
try {
cf.useSslProtocol(sslContextConfiguration());
System.out.println("Configuring SSL context...");
} catch (IOException | TimeoutException e) {
e.printStackTrace();
}
}
connectionFactory = new CachingConnectionFactory(cf);
connectionFactory.setAddresses(ADDRESSES);
connectionFactory.setChannelCacheSize(25);
admin = new RabbitAdmin(connectionFactory);
到目前为止,我发现的唯一解决方案是为useSslProtocol
设置com.rabbitmq.client.ConnectionFactory
并将其设置为CachingConnectionFactory(cf)
。
有更好的方法吗?
答案 0 :(得分:1)
您所做的是正确的;该框架为Rabbit工厂做了provide a factory bean,但这确实是在使用spring XML配置时使配置更容易。
有更好的方法吗?
因此,没有“更好的方法”打开SSL,除了,我在过去几周内多次对您说过...
connectionFactory = new CachingConnectionFactory(cf);
admin = new RabbitAdmin(connectionFactory);
...您真的应该让Spring为您管理这些对象,而不是使用new...
。
编辑
另请参阅spring boot property in the appendix
spring.rabbitmq.ssl.enabled=false
#是否启用SSL支持。
然后启动会为您自动配置SSL。
答案 1 :(得分:1)
CachingConnectionFactory现在能够通过使用URI而不是主机名来自动设置SSL:
connectionFactory.setUri("amqps://xxx");
在后台启用SSL