gpt4 book ai didi

java - 如何在 Qpid 中设置安全提供程序以允许匿名以及名称/密码身份验证?

转载 作者:行者123 更新时间:2023-11-30 08:02:43 31 4
gpt4 key购买 nike

这是我第一天使用 Apache Proton 和 Qpid(java-broker 版本 0.32),我需要一个简单的 Java 发送和接收示例(无 JMS)。通过摸索,我发现 Send.java 和 Recv.java 都没有实际工作。

在“mng.send() 上我得到

java.io.IOException: An established connection was aborted by the software in your host machine

从 stackoverflow 和其他六个谷歌搜索来看,似乎必须首先创建一个“匿名”安全提供程序。

如何做到这一点?我无法猜测 config.json 的更改或如何使用 Web 界面。 Qpid java 代理文档中的两句散文对我没有帮助。

在相关说明中,我不能只使用“amqp://admin:admin@localhost:5672”(或 amqps://admin:admin@localhost 吗?)并利用已经存在的安全提供程序在那里?

是否有人拥有已记录的 Send 和 Recv Java 示例,该示例实际上在当前版本的 Qpid 和 Proton 上运行,并且附带任何先决条件 config.json 更改?

最佳答案

带有 QPID Proton 库的 QPID Java 代理在匿名身份验证时不会出现错误。

请按照以下步骤操作,以避免 QPID Java Broker 0.32 的连接中止。

  1. 登录经纪商本地网页,例如locahost:8080 以及您的管理员用户和密码
  2. 转到“代理”选项卡并向下滚动以找到“身份验证提供商”
  3. 然后单击“添加提供商”,输入以下详细信息并保存,姓名:匿名类型:匿名

  4. 现在再次转到“Broker”选项卡并向下滚动以找到“Ports”- AMQP。单击 AMQP 进行编辑。从下拉列表中选择您在上面第 3 步中创建的“身份验证提供程序”并保存。

  5. 尝试您的测试代码

以下是需要时的工作示例:

private static final String address = "amqp://guest:guest@localhost:5672/"; // (format : QPIDPortName://user:password@host:port you may use admin:admin as well if not removed from default setting by your administrator) 
private static final String exchangeName = "MYTOPIC-EXCHANGE"; // First create this exchange in QPID Broker!
private static final String publishToAddress = new StringBuilder().append(address).append(exchangeName).toString();

public static boolean publishMessage(String msg)
{
boolean isMsgDelivered = false;
ApplicationProperties customAppProperties = null;
try
{
Messenger messenger = Proton.messenger();
messenger.start();
Message message = Proton.message();

message.setAddress(publishToAddress);
message.setContentEncoding("UTF-8");
message.setContentType("text/plain");
message.setSubject(exchangeName);
Section sec = new AmqpValue(msg);
message.setBody(sec);

messenger.put(message);
messenger.send();
messenger.stop();
isMsgDelivered = true;
}
catch (Exception e)
{
logger.log(Level.SEVERE, "Qpid Proton error: "+ e.getMessage(), e);
e.printStackTrace();
}

return isMsgDelivered;
}

关于java - 如何在 Qpid 中设置安全提供程序以允许匿名以及名称/密码身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31643536/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com