Rabbitmq,同时向两个客户端发送消息

时间:2017-06-30 09:50:26

标签: java rabbitmq

我正在开发Java REST API服务,现在我需要在服务器和移动设备之间建立TCP连接以发送消息。我发现RabbitMQ是一个好主意,但我在AMQP协议中真的很新。问题是如何从服务器向两个从同一队列中读取字节的客户端发送消息。

我的代码:

public class RabitSecClient {
    private final static String QUEUE_NAME = "hello";
    public static void main(String[] argv) throws Exception {
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();

        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
        System.out.println(" [*] Waiting for messages2");

        Consumer consumer = new DefaultConsumer(channel) {
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body)
                    throws IOException {
                String message = new String(body, "UTF-8");
                System.out.println(" [x] Received 2 '" + message + "'");
            }
        };

        channel.basicConsume(QUEUE_NAME, true, consumer);
    }
}

我执行此代码两次进行测试,当我发送消息时,只有第一个客户端接受它。是什么原因?

1 个答案:

答案 0 :(得分:0)

嗨,看下面的网站可能是你得到了你的问题的答案。基本上,如果将任何msg放入特定队列,RabbitMq将基于发布订阅机制。如果访问相同的队列,任何数量的用户都获得了该消息。

https://pubs.vmware.com/vfabric52/index.jsp?topic=/com.vmware.vfabric.rabbitmq.2.8/rabbit-web-docs/tutorials/tutorial-three-java.html