RabbitMQ以编程方式在web上创建用户

RabbitMQ以编程方式在web上创建用户,rabbitmq,java-web-start,Rabbitmq,Java Web Start,我正在开发一个网站,允许管理员在RabbitMQ上创建用户。 我检查了RabbitMQ api文档,发现了一个在windows/unix提示符下创建用户的示例。命令行如下所示: curl -i -u ADMIN_USER: ADMIN_PASSW -H "content-type:application/json" -XPUT {"password":"PASSW_WRITTEN","tags":"administrator"} http://IP_ADRESS:PORT/api/users/U

我正在开发一个网站,允许管理员在RabbitMQ上创建用户。 我检查了RabbitMQ api文档,发现了一个在windows/unix提示符下创建用户的示例。命令行如下所示:

curl -i -u ADMIN_USER: ADMIN_PASSW -H "content-type:application/json" -XPUT
{"password":"PASSW_WRITTEN","tags":"administrator"}
http://IP_ADRESS:PORT/api/users/USER_NAME
下面是指向文档的链接

在提示符中,它工作正常。但是在一个网站上,我不知道如何发送这个命令

注意我正在使用JSF在Java Web上开发,但欢迎使用任何其他Web语言示例


感谢您的帮助。

在互联网上搜索了很长时间后,我终于找到了如何通过编程方式在rabbitMQ上创建用户。基本上,您必须发送带有PUT或POST“状态”的HHTP请求。因为我是在JavaWeb上开发的,所以我可以很容易地找到一个Java库来支持我。我使用了Apache HHTP库,您可以在这里找到它:

http://hc.apache.org/downloads.cgi
下面是我的Java代码:

对于LIB,导入:

import org.apache.http.client.methods.HttpPut;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.commons.codec.binary.Base64;
创建新用户的代码:

// First, save your user/pw with permission to create new users.
// NOTE: this user is alredy created on RabbitMQ with permission to create new users
String enc = new String( Base64.encodeBase64( "USER_NAME_WITH_PERMISSION:PASS_W".getBytes() ) );

try{
  HttpPut putCriaUsuario = new HttpPut( "http://RABBIT_MQ_IP:PORT/api/users/USER_NAME_TO_CREATE );
  putCriaUsuario.addHeader( "Authorization", "Basic " + enc ); // RabbitMQ requires a user with create permission, create it mannually first
  putCriaUsuario.addHeader( "content-type", "application/json" );
  putCriaUsuario.setEntity( new StringEntity( "{\"password\":\"YOUR_PASS_WORD\",\"tags\":\"none\"}" ) );
  client.execute( putCriaUsuario );

//After create, configure RabbitMQ permission

  HttpPut putConfiguraPermissoes = new HttpPut( "http://RABBIT_MQ_IP:PORT/api/permissions/QUEUE_NAME/USER_NAME_CREATED" );
  putConfiguraPermissoes.addHeader( "Authorization", "Basic " + enc );
  putConfiguraPermissoes.addHeader( "content-type", "application/json" );
  putConfiguraPermissoes.setEntity( new StringEntity( "{\"configure\":\"^$\",\"write\":\".*\",\"read\":\".*\"}" ) ); // Permission you wanna. Check RabbitMQ HTTP API for details
  client.execute( putConfiguraPermissoes );

}catch( UnsupportedEncodingException ex ){
  ex.printStackTrace();
}catch( IOException ex ){
  ex.printStackTrace();
}

这是Java,因此可以在桌面应用程序或Java Web上使用。另一种语言遵循同样的逻辑,只是使用了另一个libs。希望它能帮助我们所有人。分享知识感到很高兴

对于那些在授予许可方面遇到问题的人来说,这一条对我适用

HttpPut putConfiguraPermissoes = new HttpPut("http://127.0.0.1:15672/api/permissions/%2F/THE_NAME_OF_THE_NEW_USER" );  
putConfiguraPermissoes.addHeader( "Authorization", "Basic " + enc );
putConfiguraPermissoes.addHeader( "content-type", "application/json" );
putConfiguraPermissoes.setEntity( new StringEntity( "{\"configure\":\".*\",\"write\":\".*\",\"read\":\".*\"}" ) );
CloseableHttpClient client2 = HttpClients.createDefault();
lient2.execute( putConfiguraPermissoes );