【问题标题】:How to use Java RabbitMQ and set URI server?如何使用 Java RabbitMQ 并设置 URI 服务器?
【发布时间】:2013-06-20 19:11:57
【问题描述】:

我正在使用 RabbitMQ Java API 连接到 RabbitMQ 服务器。我想使用ConnectionFactory.setUri(...) 来配置要使用的服务器。它似乎是对虚拟主机的影响。

有一个名为/的默认虚拟主机。

import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Channel;

import java.net.URI;

public class Worker {

    public static void main(String[] argv) throws Exception {

        ConnectionFactory factory = new ConnectionFactory();
        final URI uri = URI.create("amqp://guest:guest@localhost:5672/");
        factory.setUri(uri);
        final Connection connection = factory.newConnection();
        final Channel channel = connection.createChannel();
    }
}

使用上面的代码,配置的虚拟主机是空的。似乎没有办法使用 URI 将虚拟主机配置为 /

有没有办法做到这一点?

【问题讨论】:

    标签: java rabbitmq amqp


    【解决方案1】:

    我最终通过不使用 setUri 而是设置单个 URI 组件来解决此问题。

    【讨论】:

    • 我尝试了以下方法(在末尾附加另一个斜杠):amqp://guest:guest@localhost:5672// 并最终得到java.lang.IllegalArgumentException: Multiple segments in path of AMQP URI: //。我想目前唯一的方法是使用工厂方法来设置参数,就像你所做的那样。
    【解决方案2】:

    您需要使用 %2F 对“/”进行 URL 编码

    【讨论】:

      【解决方案3】:

      对于来自谷歌的人,使用/ 和编码为/ 的网址(即%2f)的组合对我有用。

      ConnectionFactory factory = new ConnectionFactory();
      factory.setUri("amqp://guest:guest@localhost:5672/%2F");
      

      【讨论】:

        猜你喜欢
        • 2010-11-23
        • 1970-01-01
        • 2012-04-24
        • 1970-01-01
        • 1970-01-01
        • 2017-12-13
        • 1970-01-01
        • 1970-01-01
        • 2011-09-10
        相关资源
        最近更新 更多