RabbitMQ 以编程方式创建用户 web

标签 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/USER_NAME

下面是文档链接

http://hg.rabbitmq.com/rabbitmq-management/raw-file/rabbitmq_v3_4_1/priv/www/api/index.html

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

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

感谢您的帮助。

最佳答案

在网上找了半天,终于找到了如何通过编程方式在RabbitMQ上创建用户。基本上,您必须发送带有 PUT 或 POST“状态”的 HTTP 请求。由于我在 Java Web 上进行开发,因此我可以轻松找到一个 Java 库来支持我。我使用了 Apache HTTP 库,您可以在这里找到它:

http://hc.apache.org/downloads.cgi

所以,我的 Java 代码贴在下面:

对于库,导入:

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 already 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 permissions

  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 上使用。在其他语言上遵循相同的逻辑,只是使用另一个库。希望对我们大家有帮助。乐于分享知识!

关于RabbitMQ 以编程方式创建用户 web,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26653570/

相关文章:

rabbitmq - SSH,RabbitMQ,协议(protocol) 'inet_tcp' : register/listen error: econnrefused

java - 使用 RabbitMQ/ActiveMQ 的自定义消息?

java - JWS 中 Java 的两个副本

java - 如何在 Spring AMQP 中监听现有队列?

c# - RabbitMQ 批量消费消息并一次性确认

java - 将命令行参数传递给 javaws (Java WebStart) 可执行文件

c# - 从 C# 和 .NET 自动启动 java-web-start 应用程序,.WaitForExit();不按预期工作

java - 以编程方式显示 JNLP java web start 控制台

java - 将查询参数传递到下一页

java - Axon amqp 消息传递,未触发事件处理程序